繁体   English   中英

如何将对象列表数组合并为单个数组

[英]How to Merge array of objects list into single array

我有一个对象数组列表。 我需要将所有options项目连接到一个数组中。 这是对象的示例数组。

let data = [
  {
    name: "group1",
    options: [
      {
        item: "item1",
        price: 100
      },
      {
        item: "item2",
        price: 200
      },
      {
        item: "item3",
        price: 300
      }
    ]
  },
  {
    name: "group2",
    options: [
      {
        item: "item4",
        price: 101
      },
      {
        item: "item5",
        price: 201
      }
    ]
  },
  {
    name: "group3",
    options: [
      {
        item: "item6",
        price: 254
      },
      {
        item: "item7",
        price: 358
      }
    ]
  }
]

输出如:


let options = [
  {
    item: "item1",
    price: 100
  },
  {
    item: "item2",
    price: 200
  },
  {
    item: "item3",
    price: 300
  },
  {
    item: "item4",
    price: 101
  },
  {
    item: "item5",
    price: 201
  },
  {
    item: "item6",
    price: 254
  },
  {
    item: "item7",
    price: 358
  }
]

你可以用reduce做到这一点:

const options = data.reduce((acc, item) => acc.concat(item.options), [])

您可以尝试使用Array.prototype.flatMap()

flatMap()方法首先使用映射函数映射每个元素,然后将结果展平到一个新数组中。 它与map()后跟一个深度为1 的flat()相同,但flatMap()通常非常有用,因为将两者合并为一种方法效率更高。

let options = data.flatMap(d => d.options);

 let data = [ { name: "group1", options: [ { item: "item1", price: 100 }, { item: "item2", price: 200 }, { item: "item3", price: 300 } ] }, { name: "group2", options: [ { item: "item4", price: 101 }, { item: "item5", price: 201 } ] }, { name: "group3", options: [ { item: "item6", price: 254 }, { item: "item7", price: 358 } ] } ]; let options = data.flatMap(d => d.options); console.log(options);

暂无
暂无

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

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