javascript - 将来自同一对象数组的多个数组组合在一起
问题描述
我有这个对象数组
const line_items = [
{
id: 1,
components: [
{ name: "nadia" },
{ name: "tim" },
{ name: "mark" },
{ name: "alex" }
]
}, {
id: 1,
components: [
{ name: "ramsey" }
]
}
];
我想将所有组件组合成一个数组。结果是
[
{ name: "nadia" },
{ name: "tim" },
{ name: "mark" },
{ name: "alex" },
{ name: "ramsey" }
]
我的尝试
function pretty(obj) { return JSON.stringify(obj, null, 2) }
const line_items = [
{
id: 1,
components: [
{ name: "nadia" },
{ name: "tim" },
{ name: "mark" },
{ name: "alex" }
]
}, {
id: 1,
components: [
{ name: "ramsey" }
]
}
];
const all_components = line_items;
console.log(pretty(all_components));
解决方案
您可以使用Array.flatMap()
(IE/Edge 不支持):
const line_items = [{"id":1,"components":[{"name":"nadia"},{"name":"tim"},{"name":"mark"},{"name":"alex"}]},{"id":1,"components":[{"name":"ramsey"}]}];
const all_components = line_items.flatMap(o => o.components);
console.log(pretty(all_components));
function pretty(obj) { return JSON.stringify(obj, null, 2) }
如果不支持 flatMap ,您可以使用Array.map()
spread 和Array.concat()
:
const line_items = [{"id":1,"components":[{"name":"nadia"},{"name":"tim"},{"name":"mark"},{"name":"alex"}]},{"id":1,"components":[{"name":"ramsey"}]}];
const all_components = [].concat(...line_items.map(o => o.components));
console.log(pretty(all_components));
function pretty(obj) { return JSON.stringify(obj, null, 2) }
推荐阅读
- docusignapi - 单击 API 返回 401 错误。使用相同令牌的 RestAPI 不
- linux - core3.0 docker容器崩溃没有状态
- jquery - jquery__WEBPACK_IMPORTED_MODULE_4__.hubConnection 不是函数
- string - 修剪字符串变量的第一个字符
- r - 具有两个需要跨向量运行的参数的 uniroot 函数
- python - python:如何确定 Windows 上 USB 设备的 HID 集合
- excel - 如何使用动态行范围/变量做 SUMIF?
- android - 打开软键盘时是否可以获得事件?
- node.js - Mongoose 是否与预配置吞吐量的 Cosmos DB 一起使用?
- amazon-web-services - SQS 消息接收器中缺少 MessageAttributes 属性