javascript - 将内部数组从地图合并为一个的干净方法是什么?
问题描述
我目前有以下内容,有没有更简洁的方法可以做到这一点forEach
?
今天是星期五,今天我的脑袋已经糊涂了:)
let productsObject = [{
id: 1,
addons: [{
id: 1,
group_id: 1
}, {
id: 2,
group_id: 1
}, {
id: 3,
group_id: 1
}]
}, {
id: 2,
addons: [{
id: 1,
group_id: 2
}, {
id: 3,
group_id: 2
}]
}];
let addonsList = [];
productsObject.map(e => e.addons).forEach(e => {
addonsList = [...addonsList, ...e];
});
console.log(addonsList);
解决方案
另一个不错的选择是使用flatMap。顾名思义,这是flat和map方法的组合。
let productsObject = [{
id: 1,
addons: [{
id: 1,
group_id: 1
}, {
id: 2,
group_id: 1
}, {
id: 3,
group_id: 1
}]
}, {
id: 2,
addons: [{
id: 1,
group_id: 2
}, {
id: 3,
group_id: 2
}]
}];
let addonsList = productsObject.flatMap(e => e.addons);
console.log(addonsList);
推荐阅读
- laravel - Laravel/VueJs。如何根据传入的列值显示不同颜色的按钮?
- python - 如何修复:RuntimeError:pyTorch 中的大小不匹配
- java - 如何在java中表示无向加权图
- asp.net-mvc - 作业在 Hangfire 中随机运行
- java - 如何设置平板电脑的 tablayout 图标大小
- python - 我如何在 python-kafka 中使用多个消费者?
- android - 无法将图像视图绘制为叠加层
- python - 如何防止for循环覆盖字典?
- c++ - 将枚举与 CMake 链接的正确方法是什么?
- javascript - 如何区分css中filter的不同属性?