我有一个对象数组:
reviewers = [
{
id: ''
},
{},
{}
]
这些对象中的每一个都是同质的(除了'id'之外还有其他几个键)。 我也有一个Object,具有以下结构:
reviewerCounters = {
12345678: 3,
12312312: 2,
14234234: 0
}
我的想法是,在第二个对象中,我有属性'id'的值(id - value)对象的长度始终与审阅者数组的长度相同。
我需要一个函数,它接受第二个对象上每个ID的值,并在第一个数组的每个对象中的新属性“Counter”中输出该值,其ID与所取值的ID相匹配。
因此,输出将是:
reviewers = [
{
id: '12345678',
counter: '3'
},
{},
{}
]
实现这一目标的最佳方式是什么?
答案 0 :(得分:1)
您可以使用数组的单个循环并检查id
是否存在in
计数器对象。如果存在,则分配值。
var reviewers = [{ id: '12345678' }, {}, {}],
reviewerCounters = { 12345678: 3, 12312312: 2, 14234234: 0 };
reviewers.forEach(function (o) {
if (o.id in reviewerCounters) {
o.counter = reviewerCounters[o.id];
}
});
console.log(reviewers);
答案 1 :(得分:0)
迭代一个对象非常棘手,将它与一个嵌套迭代结合在一个数组上,这样的东西可能对你有用:
function addCounter(obj, arrayData)
{
var keys = Object.keys(obj);
for(var i = 0; i < keys.length; i++)
{
var id = obj[keys[i]];
for(var w = 0; w < arrayData.length; w++)
{
if(arrayDaya[w]['id'] == id)
{
arrayData[w]['counter'] = obj[keys[i]];
}
}
return arrayData;
}
}