javascript - 将对象嵌套数组合并到一个新数组中
问题描述
鉴于下面的对象,我正在寻找一种干净有效的方法来从每个项目的“subItems”数组创建一个数组。
const items = [{
'a': 'a1',
'b': 'b1',
'subItems': [
{'c': 'c1'},
{'d': 'd1'}
]
},
{
'e': 'e1',
'subItems': [
{'f': 'f1'},
{'g': 'g1'}
]
}
];
所以对于这个例子,我需要的结果是:
const groupedSubItems = [{c: c1},{d:d1},{f:f1},{g:g1}];
目前我只是循环并连接所有数组,但感觉不是处理这个问题的最佳方法:
let groupedSubItems = [];
items.forEach(function(item) {
if (item.subItems) {
groupedSubItems = groupedSubItems.concat(item.subItems);
}
});
注意:所有子项数组将仅向下一层,如图所示,具有相同的键,并且可能存在也可能不存在。
解决方案
您可以使用concat
with spread 语法和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)
推荐阅读
- maven - cannot download snapshot from nexus
- ruby-on-rails - rails controller's action / disable concurrency
- javascript - 回调函数缺少所需数据的范围
- python - ndarray object to array conversion, where object contains variable size images
- php - Laravel application on sub-directory
- docker - 400 Bad Request nginx/1.13.12
- php - How to make access denied for accessing image via browser url in magento2?
- android-layout - 在约束布局中让两个视图共享点击反馈
- c# - 动态对象随处调用相关功能以扩展库 C#
- python - 如何使用python代码选择最新的.txt在jupyter notebook中运行(仅限python代码)