我想计算数组中每个字符串的次数,并按照数组中存在的次数对它们进行排序
我现在有了这个代码
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
提前致谢
答案 0 :(得分:3)
两次通过。首先,计算每个单词的出现次数:
counter = {}
words.forEach(function(word) {
counter[word] = (counter[word] || 0) + 1;
});
然后,通过比较两个单词的计数来对数组进行排序:
words.sort(function(x, y) {
return counter[y] - counter[x];
});