我有以下方法根据某些输入文本获取单词频率:
function getWordFrequency(lowerCaseArray) {
var wordFrequency = {};
$.each(lowerCaseArray, function(ix, word) {
// skip empty results
if (!word.length) {
return;
}
// add word to wordFrequency
if (!wordFrequency[word]) {
wordFrequency[word] = 0;
}
wordFrequency[word]++;
});
return wordFrequency;
}
但是,我想按降序返回单词的频率,即
cats => 20
dogs => 19
frog => 17
humans => 10
目前,我的算法按照输入单词出现的顺序返回。
答案 0 :(得分:2)
如果要订购,则必须返回一个对象数组。对象的属性没有保证的顺序。
var obj = getWordFrequency(words);
var array = Object.keys(obj).map(function(key){
return {word: key, count: obj[key]};
});
array.sort(function (a,b){ return b.count - a.count});
从我的手机输入,未经测试,a和b的顺序可能需要撤消