Brad Stewart
Brad Stewart

Reputation: 363

Remove objects from each object in an array of objects

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

Upvotes: 0

Views: 49

Answers (1)

Ramesh Reddy
Ramesh Reddy

Reputation: 10662

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)

Upvotes: 1

Related Questions