添加键值到数组中的所有对象从另一个JavaScript



我想从另一个数组中为数组中的所有对象添加一个key:value参数如:

var arrOfObj = [{id: 001, date:'22/05/2020', Actor:'jane'},
{id: 002, date:'02/03/2020', Actor:'alice'},
{id: 003, date:'11/06/2020', Actor:'jean'},
{id: 004, date:'20/01/2020', Actor:'yann'}];
var arrayScore = [44,2,3,5];

我想为每个对象添加一个key:value参数从arrayScore,像:

var arrOfObj = [{id: 001, date:'22/05/2020', Actor:'jane', score:44},
{id: 002, date:'02/03/2020', Actor:'alice', score:2},
{id: 003, date:'11/06/2020', Actor:'jean', score:3},
{id: 004, date:'20/01/2020', Actor:'yann', score:5}];

我试过这个代码:

var result = arrOfObj.map(function(el) {
var o = Object.assign({}, el);
o.score = arrayScore;
return o;
});
console.log(result);

但是arrOfObj为每个对象添加arrayScore中的所有值!!请问我怎样才能改变这个??

谢谢你的帮助!

可以使用Array。映射来创建包含用户分数的新数组,我也会注意到TJCrowders关于id的观点。

var arrOfObj = [{id: 1, date:'22/05/2020', Actor:'jane'},
{id: 2, date:'02/03/2020', Actor:'alice'},
{id: 3, date:'11/06/2020', Actor:'jean'},
{id: 4, date:'20/01/2020', Actor:'yann'}];
var arrayScore = [44,2,3,5];
const result = arrOfObj.map((el, index) => ({...el, score: arrayScore[index] }));
console.log("Result with scores:", result);

由于您不需要一个新的对象数组,而只需要为数组中的对象添加属性,因此您可以使用数组方法forEach来代替map。

如果向forEach提供的回调函数传递两个形参,则第二个形参将接收要迭代的数组元素的索引。这允许我们从arrayScore数组中分配相应的值。

应该可以

arrOfObj.forEach((o, i) => {
o.score = arrayScore[i];
});

干杯!

相关内容

最新更新