javascript - 如何使用多个键按对象的值对对象进行排序?

标签 javascript arrays sorting object

I want to use the sort method explained here但我有

{
  "CYLINDER": 2986,
  "HYDRAULIC": 1421,
  "JACKS": 84,
  "INSTALLATION": 119,
  "REAR": 61,
  "JACK": 334,
  "TUBE": 1,
  "FEED": 114,
  "ASSEMBLY": 326,
  "DCS": 2,
  "TOWER": 65,
  "RAISING": 8,
  "BREAKOUT": 6,
}

我创建了这个函数,将每个字符串分组在一起并添加一个计数(作为键的值,见上文)

function generateCountDuplication(wordArray) {
  const countedWords = wordArray.reduce(function(allWords, word) {
    if (word in allWords) {
      allWords[word]++;
    }
    else {
      allWords[word] = 1;
    }
    return allWords;
  }, {});
  return countedWords;
}

我尝试在 Stackoverflow 上进行谷歌搜索和查看,但没有找到当键不唯一时按值排序的任何位置。有什么线索可以解决吗?

我想要这样的结果:

{
  "TUBE": 1,
  "DCS": 2,
  "BREAKOUT": 6,
  "RAISING": 8,
  "REAR": 61,
  "TOWER": 65,
  "JACKS": 84,
  "FEED": 114,
  "INSTALLATION": 119,
  "ASSEMBLY": 326,
  "JACK": 334,
  "HYDRAULIC": 1421,
  "CYLINDER": 2986
}

最佳答案

按如下方式取消Object.keys()map即可达到预期结果。

const list = {
  "CYLINDER": 2986,
  "HYDRAULIC": 1421,
  "JACKS": 84,
  "INSTALLATION": 119,
  "REAR": 61,
  "JACK": 334,
  "TUBE": 1,
  "FEED": 114,
  "ASSEMBLY": 326,
  "DCS": 2,
  "TOWER": 65,
  "RAISING": 8,
  "BREAKOUT": 6,
};

var newList = {};
Object.keys(list).sort(function(a,b){return list[a]-list[b]})
                 .map(key => newList[key] = list[key]);
console.log(newList);

关于javascript - 如何使用多个键按对象的值对对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55520228/

相关文章:

javascript - insideHTML 不适用于节点

Javascript-Firefox 中 ajax 请求 $.getJSON 中的 XML 语法错误

java - 为什么我们不能改变插入排序的 while 循环中语句的顺序?

javascript - 如何将动态内容绑定(bind)到 Angular-toastr?

javascript - 使用 Jquery 从 PHP 页面解码 JSON 数据

c - 结构类型数组,C错误

c++ - 如何创建 std::array 包装器类

c++ - cpp std::list 使用步进添加新元素

c++ - 为什么 std::vector 的相同成员的地址在 std::sort 的比较函数中不同?

javascript - iOS 8 在 OAuth 的 401 上显示基本身份验证的弹出窗口