javascript - 按降序对 Javascript 关联数组值进行排序

标签 javascript

我有以下方法可以根据某些输入文本获取词频:

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

目前,我的算法按照输入单词出现的顺序返回。

最佳答案

如果你想要排序,你必须返回一个对象数组。对象的属性没有保证的顺序。

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的顺序可能需要颠倒

关于javascript - 按降序对 Javascript 关联数组值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33924803/

相关文章:

javascript - 如何禁用由子元素触发的 mouseout 事件?

javascript - jQuery 移动响应面板滑动打开/关闭关闭

javascript - 为什么我的脚本在调用 XMLHttpRequest.send() 后停止运行?

javascript - IE8 XmlHttpRequest调试

javascript - 将数据从 firestore 附加到 JavaScript 中的数组

javascript - 在自定义指令中使用 ng Repeat 来填充选择下拉列表

javascript - AWS AutoScaling Down 策略在扩展成功后失败 : Failed to execute autoscaling action: No step adjustment found for metric value

javascript - 是什么决定了一个 JavaScript 函数是一个命名的匿名函数还是一个,嗯,常规函数?

javascript - React-timer 中的解析时间

javascript - 用 outerHTML 替换元素并立即访问新创建的元素