我想知道如何计算像这样一个对象数组的出现次数:
[
{id : 12,
name : toto,
},
{id : 12,
name : toto,
},
{id : 42,
name : tutu,
},
{id : 12,
name : toto,
},
]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想有一个功能谁给我这个:
getNbOccur(id){
//don't know...//
return occurs;
}
Run Code Online (Sandbox Code Playgroud)
如果我给id 12,我想有3.
我怎样才能做到这一点?
Alb*_*res 21
一个简单的ES6解决方案filter
用于获取具有匹配id的元素,然后获取已过滤数组的长度:
var array = [{
id: 12,
name: 'toto',
},
{
id: 12,
name: 'toto',
},
{
id: 42,
name: 'tutu',
},
{
id: 12,
name: 'toto',
},
];
var id = 12;
var count = array.filter((obj) => obj.id === id).length;
console.log(count);
Run Code Online (Sandbox Code Playgroud)
编辑:另一个解决方案,更高效(因为它不生成新列表),是reduce
@YosvelQuintero建议的用法:
var array = [{
id: 12,
name: 'toto',
},
{
id: 12,
name: 'toto',
},
{
id: 42,
name: 'tutu',
},
{
id: 12,
name: 'toto',
},
];
var id = 12;
var count = array.reduce((acc, cur) => cur.id === id ? ++acc : acc, 0);
console.log(count);
Run Code Online (Sandbox Code Playgroud)
你算
var arr = [
{id: 12, name: 'toto'},
{id: 12, name: 'toto'},
{id: 42, name: 'tutu'},
{id: 12, name: 'toto'}
]
function getNbOccur(id, arr) {
var occurs = 0;
for (var i=0; i<arr.length; i++) {
if ( 'id' in arr[i] && arr[i].id === id ) occurs++;
}
return occurs;
}
console.log( getNbOccur(12, arr) )
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13695 次 |
最近记录: |