gpt4 book ai didi

javascript - 获取属于 JavaScript/Node js 中特定 ID 的数组对象的计数

转载 作者:搜寻专家 更新时间:2023-10-31 23:30:20 24 4
gpt4 key购买 nike

我有一个这样的数组:

var array = [ 
[ '2','Yes'],
[ '2','Yes'],
[ '2','Yes'],
[ '3','Yes'],
[ '3','Yes'],
[ '4','Yes'],
]

上述数组(2,3 和 4)中的 ID 动态来自服务器响应。我需要计算特定 ID 的条目数。我无法弄清楚如何遍历此数组以获得预期的输出。预期的输出是:

[{"ID" : "4", Count : "1"},{"ID" : "3", Count : "2"},{"ID" : "2",Count : "3"}]

注意输出是按照Count的升序排列

这是我试过的:

var temp1 = [];
var temp2 = [];
var temp3 = [];
for(var i = 0; i < array.length; ++i){
if(array[i][0] == 2){
temp1.push(array[i])
}
if(array[i][0] == 1){
temp2.push(array[i])
}
if(array[i][0] == 3){
temp3.push(array[i])
}

}

var output = [{
ID: "2",
Count: temp1.length,
},
{
ID: "1",
Count: temp2.length,
},
{
ID: "3",
Count: temp3.length
}]

console.log(output)

如果数据是动态的,我相信我这样做的方式不是最好的方法。我如何以更好的方式做到这一点?

最佳答案

联合使用Array.prototype.reduce() , Object.entries() , Array.prototype.sort()Array.prototype.map()将产生这个:

const array = [ 
[ '2','Yes'],
[ '2','Yes'],
[ '2','Yes'],
[ '3','Yes'],
[ '3','Yes'],
[ '4','Yes'],
];

const result = Object.entries(array.reduce((a, [id]) => {
a[id] = (a[id] || 0) + 1;
return a;
}, {})).map(([ID, Count]) => ({ID, Count}))
.sort((a, b) => a.Count - b.Count);

console.log(result);

关于javascript - 获取属于 JavaScript/Node js 中特定 ID 的数组对象的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56375737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com