Javascript 计算和存储对象数组中的不同元素及其计数
我有一个对象数组,我想计算不同元素的数量和这些对象的数量Javascript 计算和存储对象数组中的不同元素及其计数,javascript,arrays,node.js,Javascript,Arrays,Node.js,我有一个对象数组,我想计算不同元素的数量和这些对象的数量 [ { name: 'Suman', game: '5A' }, { name: 'Suman', game: '5A' }, { name: 'Namus', game: '5A' }, { name: 'Namus', game: '5A' } ] 我想计算不同名称的数量,并将它们存储在一个对象中。我尝试过1#将所有名称按入一个数组, 2#然后分类, 3#然后计算不同名称的
[ { name: 'Suman',
game: '5A'
},
{ name: 'Suman',
game: '5A'
},
{ name: 'Namus',
game: '5A'
},
{ name: 'Namus',
game: '5A'
}
]
我想计算不同名称的数量,并将它们存储在一个对象中。我尝试过1#将所有名称按入一个数组,
2#然后分类,
3#然后计算不同名称的数量和
4#最后把他们推到物体上。
这个过程太长了。有没有较短的方法可以做到这一点。我正在使用Nodejs
提前感谢您将创建一个新对象,其中键是名称,值是计数:
var youArr = [
{ name: 'Suman',
game: '5A'
},
{ name: 'Suman',
game: '5A'
},
{ name: 'Namus',
game: '5A'
},
{ name: 'Namus',
game: '5A'
}
];
var count = {}
for(var i=0; i < youArr.length; i++){
count[youArr[i].name] = count[youArr[i].name] || 0;
count[youArr[i].name]++;
}
alert(count['Namus']); // 2
var youArr=[
{名称:'苏曼',
游戏:“5A”
},
{名称:'苏曼',
游戏:“5A”
},
{名称:'Namus',
游戏:“5A”
},
{名称:'Namus',
游戏:“5A”
}
];
变量计数={}
对于(变量i=0;i
这是一个很好的地方,可以使用:
reduce()方法对累加器和每个累加器应用一个函数
数组的值(从左到右)必须将其减少为单个值
价值观
reduce对中存在的每个元素执行一次回调函数
数组(不包括数组中的孔)接收四个参数:
初始值(或来自上一次回调调用的值),的值
当前元素、当前索引和其上的数组
迭代正在发生
它看起来像这样:
var arr = [ { name: 'Suman',
game: '5A'
},
{ name: 'Suman',
game: '5A'
},
{ name: 'Namus',
game: '5A'
},
{ name: 'Namus',
game: '5A'
}
]
var counts = arr.reduce(function(counts, item) {
counts[item.name] = (counts[item.name] || 0) + 1;
return counts;
}, {});
计数
为:
{ Suman: 2, Namus: 2 }
[ { name: 'Suman', count: 2 },
{ name: 'Namus', count: 2 } ]
评论中询问:
如果我希望在一个对象数组中包含计数和名称,如
[{name:'Suman',count:'2'},{name:'Namus',count:'2'}]
如果您已经从上面的reduce
调用中获得了计数
,则可以将其键设置为所需的格式:
var countsArray = Object.keys(counts).map(function(name) {
return {name: name, count: counts[name]};
});
countsArray
则是:
{ Suman: 2, Namus: 2 }
[ { name: 'Suman', count: 2 },
{ name: 'Namus', count: 2 } ]
如果我想要像[{name:'Suman',count:2},{name:'Namus',count:2}]这样的对象数组中的计数和名称该怎么办?谢谢,伙计,我从来都不清楚映射。你刚刚睁开了我的眼睛。