我有对象的数组。

let data = [
  {
    "categories" : [
      {
        "products" : [
          {
            "name" : "Product 1"
          }
        ],
        "id" : 1369
      }
    ]
  }
];


我想像这样重建它:

let data = [
  {
    "products" : [
      {
        "name" : "Product 1"
      }
    ],
    "id" : 1369
  }
];


如果我使用.map(),则会得到带有对象的数组:

let data = [
  [
    {
      "products" : [
        {
          "name" : "Product 1"
        }
      ],
      "id" : 1369
    }
  ]
];


在这种情况下,我必须采用什么解决方案?

最佳答案

在使用Array.map()spreading展平为Array.concat()之后:



const data = [{"categories":[{"products":[{"name":"Product 1"}],"id":1369}]}];

const result = [].concat(...data.map(o => o.categories));

console.log(result);





或将Array.reduce()Array.concat()一起使用:



const data = [{"categories":[{"products":[{"name":"Product 1"}],"id":1369}]}];

const result = data.reduce((r, o) => r.concat(o.categories), []);

console.log(result);

09-04 16:13
查看更多