繁体   English   中英

解构对象数组

[英]Destructuring an array of objects

我想根据某些键/值对过滤现有的对象数组。 在下面的示例中,我希望结果是一个只有id和def字段的对象的新数组(假定对象中可以有n个字段,因此我不想显式删除abc)。 但是,如果我像下面这样编码,则看起来必须手动逐行手动构建新数组。 有没有更简单的单线服务?

  const someArray = [
   {id: 1, abc: 2, def: 3},
   {id:4, abc: 6, def: 8},
   {id: 5, abc: 7, def: 9},
  ];
  const [array0, array1, array2] = someArray;
  const onlyOneRow = (({ id, def }) => ({ id, def }))(array0);

这可以通过map()方法轻松生成:

 const someArray = [ {id: 1, abc: 2, def: 3}, {id:4, abc: 6, def: 8}, {id: 5, abc: 7, def: 9}, ]; let res = someArray.map(x => {return {id: x.id, def: x.def}}); console.log(res); 

您可以使用filter来构建满足您需要的新阵列。 考虑以下示例:

var array1 = [
  {id: 1, abc: 2, def: 3},
  {id:4, abc: 6, def: 8},
  {id: 5, abc: 7, def: 9},
];

// pass a function to filter
const filteredArray = array1.filter(({id,def}) => x.id == 4);

console.log(filteredArray);
// expected output: Array [{id:4, abc: 6, def: 8}]

如果您需要更改此过滤数组中的值,则可以使用map:

const mappedArray = output.map(x => {id: x.id, def: x.def});

console.log(mappedArray);
// expected output: Array [{id:4, def: 8}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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