提问人:Richo 提问时间:9/7/2022 最后编辑:Richo 更新时间:9/7/2022 访问量:218
在 JavaScript 中将对象数组中的值替换为另一个数组中的值
Replace values in array of object with values from another array in JavaScript
问:
这应该是一个小任务,但无法弄清楚。 我有一个名为“A”的对象数组
A = [{x:a,y:10},{x:b,y:5},{x:c,y:50}]
和一个名为“B”的数组
B = ['2022-06-15','2022-06-16','2022-06-17']
需要将 A 中 x 的值替换为 B 的值
预期输出 C
C = [{x:'2022-06-15',y:10},{x:'2022-06-16',y:5},{x:'2022-06-17',y:50}]
我正在使用 for 循环,但它更改了原始数组“A”(因为 JS 数组是按引用传递的)
const D = A; // or D = [...A]
for (let i = 0; i < D.length; i++) {
D[i].x = B[i];
}
console.log(A);
console.log(D);
答:
1赞
Barmar
9/7/2022
#1
不要复制 .循环并复制替换属性的每个对象。D
A
A
x
const D = A.map((el, i) => ({...el, x: B[i]}));
0赞
Chris G
9/7/2022
#2
你可以用 .map() 方法做到这一点
const A = [{
x: 'a',
y: 10
}, {
x: 'b',
y: 5
}, {
x: 'c',
y: 50
}];
const B = ['2022-06-15', '2022-06-16', '2022-06-17'];
x
表示数组中的每个元素,以及 ,您将使用它来遍历第二个数组A
i
index
B
const C = A.map((x, i) => ({
x: B[i],
y: x.y
}));
console.log(C);
评论
const D = [...A]
以浅层复制数组。还有 ,还有更多方法可以对数组进行浅拷贝。const D = A.slice();
D[i].x
B[i]