首页 > 解决方案 > 在javascript中使用map为内部数组添加值

问题描述

您好假设我有以下数组:

let array = [
  {
    id: "1",
    name: "name",
    categories: [
      {
        subid: "10",
        name: "name",
      },
      {
        subid: "11",
        name: "name",
      }
    ]
  },
  {
    id: "2",
    name: "name",
    categories: [
      {
        subid: "20",
        name: "name",
      },
      {
        subid: "21",
        name: "name",
      }
    ]
  }
]

我的目标是获取id每个对象的 并将其添加到内部数组categories中。所以它看起来像这样:

let array = [
  {
    id: "1",
    name: "name",
    categories: [
      {
        subid: "10",
        name: "name",
        id: "1"
      },
      {
        subid: "11",
        name: "name",
        id: "1"
      }
    ]
  },
  {
    id: "2",
    name: "name",
    categories: [
      {
        subid: "20",
        name: "name",
        id: "2"
      },
      {
        subid: "21",
        name: "name",
        id: "2"
      }
    ]
  }
]

这是我到目前为止所拥有的:

array.map(x => (x.id)) // returns new array of ids
// add these into the categories

有人可以帮我解决这个问题map吗?如果map不能使用,我认为for each也可以

标签: javascriptarraysobject

解决方案


使用map对象内部的方法和传播语法,您可以做到这一点。

let array = [{"id":"1","name":"name","categories":[{"subid":"10","name":"name"},{"subid":"11","name":"name"}]},{"id":"2","name":"name","categories":[{"subid":"20","name":"name"},{"subid":"21","name":"name"}]}]

let result = array.map(({id, categories, ...rest}) => ({
  ...rest, id, categories: categories.map((o) => ({...o, id}))
}))

console.log(result)


推荐阅读