我想计算数组中每个字符串有多少次,并按它们在数组中存在的次数进行排序
我现在有这个代码
hlasy.sort();
var zaciatok = null;
var pocet = 0;
for (var i = 0; i < hlasy.length; i++) {
if (hlasy[i] != zaciatok) {
if (pocet > 0) {
console.log(zaciatok + ' má ' + pocet + ' hlasov');
}
zaciatok = hlasy[i];
pocet = 1;
} else {
pocet++;
}
}
if (pocet > 0) {
console.log(zaciatok + ' má ' + pocet + ' Hlasov');
}
它可以工作,但是会从数组中输出按字母排序的字符串,而不是它们在数组中的排序次数。
例如,它输出
apple - 1
banana - 5
cherry - 4
但是我需要这个
banana - 5
cherry - 4
apple - 1
提前致谢
最佳答案
两遍。首先,计算每个单词的出现次数:
counter = Object.create(null);
words.forEach(function(word) {
counter[word] = (counter[word] || 0) + 1;
});
然后,通过比较两个单词的计数对数组进行排序:
words.sort(function(x, y) {
return counter[y] - counter[x];
});