我想从另一个数组中为数组中的所有对象添加一个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];
});
干杯!