将第二个嵌套对象数组复制到第一个嵌套对象数组中

Copy second nested array of objects into first nested array of objects

如何将对象数组中的键值分配给另一个数组对象

我想将 key:value 对分配给另一个对象数组中的现有对象数组。

我已经检查过这个 thread 但它对我的情况不起作用。

我试过类似的方法,但没有返回我正在寻找的所需输出。

const DataA = {
  "id": 57,
  "status": true,
  "options": [{ "id": 1, "name": "Type A" },
    { "id": 2, "name": "Type B" },
    { "id": 3, "name": "Type C" }]
}

const DataB = {
  "id": 57,
  "status": true,
  "options": [{ "id": 1, "value": 10 },
    { "id": 2, "value": 20 },
    { "id": 3, "value": 30 }]
}

let result;
var A1 = DataA.options.map((v) => {
  console.log(v);
  result = v;
})

var A2 = DataB.options.map(v => {
  result.options = v;
  console.log("result",result);
})

let arr3 = DataA.options.map((item, i) => Object.assign({}, item, DataB[i]));

console.log(arr3);

我需要的结果如下:

const DataA = {
  "id": 57,
  "status": true,
  "options": [{ "id": 1, "name": "Type A", "value": 10 },
    { "id": 2, "name": "Type B", "value": 20 },
    { "id": 3, "name": "Type C", "value": 30 }]
}

我需要合并与此略有不同的数组的深层克隆

链接的副本确实解决了您的问题,但您需要根据自己的情况进行调整,而不仅仅是复制粘贴。

DataA.options = DataA.options.map((item, i) => Object.assign({}, item, DataB.options[i]));

但是由于这无论如何都会改变原始 DataA 对象,所以您最好使用 forEach() 并避免从 .map().

创建中间数组
DataA.options.forEach((item, i) => Object.assign(item, DataB.options[i]));

以上都假设两个对象的options数组都是a。相同的长度,和 b。按id排序。为避免这些假设,您可以使用 .find() 来查找匹配元素,而不是依赖索引。

DataA.options.forEach(item =>
  Object.assign(item, DataB.options.find(({ id }) => id === item.id)));

const DataA = {
  "id": 57,
  "status": true,
  "options": [
    { "id": 1, "name": "Type A" },
    { "id": 2, "name": "Type B" },
    { "id": 3, "name": "Type C" }]
}

const DataB = {
  "id": 57,
  "status": true,
  "options": [
    { "id": 1, "value": 10 },
    { "id": 2, "value": 20 },
    { "id": 3, "value": 30 }]
}

DataA.options.forEach(item =>
  Object.assign(item, DataB.options.find(({ id }) => id === item.id)));

console.log(DataA)
.as-console-wrapper { max-height: 100% !important; top: 0; }