I want to improve the table performance with a large dataset by removing all nested objects which the table doesn't use. I don't want to name the keys because they will vary from dataset to dataset. This needs to be a reusable helper function that removes objects based on typeof rather than a key.
Example data:
const data = [
{ test: 1, notes: [] },
{ test: 2, notes: [] },
{ test: 3, notes: [] }
];
expected result
[
{ test: 1 },
{ test: 2 },
{ test: 3 }
];
What I've tried:
const simpleRows = (arr) => {
var rows = arr.map(({ notes, ...keepAttrs }) => keepAttrs);
return rows;
};
const rows = simpleRows(data) // This works but I have hardcoded the key 'notes' which I don't want
What is the most efficient way to remove all objects from each object in an array of objects in a large dataset (~10000 objects in the array) without hardcoding the key, and without an external library?
Thanks
-
do you want to remove every property that is an array?Ramesh Reddy– Ramesh Reddy2021年11月14日 06:43:28 +00:00Commented Nov 14, 2021 at 6:43
-
1@RameshReddy yes every property that is an array from each objectBrad Stewart– Brad Stewart2021年11月14日 06:47:01 +00:00Commented Nov 14, 2021 at 6:47
1 Answer 1
You can filter the entries of each object and create a new object from the filtered entries:
const data = [
{ test: 1, notes: [] },
{ test: 2, notes: [] },
{ test: 3, notes: [] }
]
const result = data.map(obj => Object.fromEntries(Object.entries(obj).filter(([_, v]) => !Array.isArray(v))))
console.log(result)