将第二个嵌套对象数组复制到第一个嵌套对象数组中
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; }
如何将对象数组中的键值分配给另一个数组对象
我想将 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; }