简体   繁体   中英

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

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM