如何在嵌套对象中推送响应

How to push response in nested onject

我有一个嵌套数据,我试图在其中推送从服务器获得的响应,

我的数据是:

let d = [{
    "dashId": 3,
    "dashName": "one",
    "dashData": []
  },
  {
    "dashId": 4,
    "dashName": "two",
    "dashData": [{
      "nestedId": 1,
      "nestedData": "how are you"
    }]
  }
]

下面是我要推送的数据

let res = [{
  "nestedId": 11,
  "nestedData": "I am fine"
}]

我做的是:-

let dd = d.map(li => {
  if (li.dashId === 3) {
    li.dashData.push(res)
  }
})

console.log(dd)

我得到未定义的输出

[ undefined, undefined ]

Array.map 函数创建一个新数组,其中填充了对调用数组中的每个元素调用提供的函数的结果。因此 map 中的回调应该 return 一个项目,并且在您的代码中,回调中没有 returned。

在你的情况下,最好按如下方式使用 Array.forEach

const d = [{
    "dashId": 3,
    "dashName": "one",
    "dashData": []
  },
  {
    "dashId": 4,
    "dashName": "two",
    "dashData": [{
      "nestedId": 1,
      "nestedData": "how are you"
    }]
  }
];

const res = [{
  "nestedId": 11,
  "nestedData": "I am fine"
}];

d.forEach(li => {
  if (li.dashId === 3) {
    li.dashData.push(...res)
  }
});

console.log(d);

您只需要在 map 回调中 return li

let dd = d.map(li => {
  if (li.dashId === 3) {
    li.dashData.push(res)
  }
  return li
})

我不确定你需要什么,但我认为 res 不应该是一个数组:

const res = {
  "nestedId": 11,
  "nestedData": "I am fine"
};