给定下面的对象,我正在寻找一种干净有效的方法来从每个项目的“subItems”数组创建一个数组。
const items = [{
'a': 'a1',
'b': 'b1',
'subItems': [
{'c': 'c1'},
{'d': 'd1'}
]
},
{
'e': 'e1',
'subItems': [
{'f': 'f1'},
{'g': 'g1'}
]
}
];
Run Code Online (Sandbox Code Playgroud)
因此对于这个例子,我需要的结果是:
const groupedSubItems = [{c: c1},{d:d1},{f:f1},{g:g1}];
Run Code Online (Sandbox Code Playgroud)
目前,我只是循环并连接所有数组,但这并不是处理此问题的最佳方法:
let groupedSubItems = [];
items.forEach(function(item) {
if (item.subItems) {
groupedSubItems = groupedSubItems.concat(item.subItems);
}
});
Run Code Online (Sandbox Code Playgroud)
注意:所有子项数组将仅向下一级,如图所示,具有相同的键,并且可能存在也可能不存在。
您可以使用concat扩展语法和map方法来创建子项数组。
const items = [{"a":"a1","b":"b1","subItems":[{"c":"c1"},{"d":"d1"}]},{"e":"e1","subItems":[{"f":"f1"},{"g":"g1"}]}]
const subItems = [].concat(...items.map(({subItems}) => subItems || []));
console.log(subItems)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4438 次 |
| 最近记录: |