繁体   English   中英

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

[英]Add key value to all objects in array from another with 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];

我想为每个对象添加一个来自 arrayScore 的 key:value 参数,例如:

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为每个 object 添加来自arrayScore的所有值? 请问这个怎么改??

谢谢您的帮助!

您可以使用Array.map创建包含用户分数的新数组,我也会注意到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];
});

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM