javascript - 如何根据值对 JavaScript 中的对象进行排序?

标签 javascript sorting

我的目标是:

[ '4e95b308d36f429729000021': 1,
  '4e95b309d36f429729000039': 2,
  '4e95b308d36f429729000001': 1 ]

我想排序,使 2 值的键排在第一位。我知道这个问题之前已被问过一百万次,但这行不通:

var descSort;
descSort = function(a, b) {
  return b.value - a.value;
};
popularLocationsArray.sort(descSort);

最佳答案

首先,您的代码不是有效的 JavaScript,它应该是:

var popularLocationsArray = [ 
  {'4e95b308d36f429729000021': 1},
  {'4e95b309d36f429729000039': 2},
  {'4e95b308d36f429729000001': 1} 
]

知道您的问题是您不知道每个对象中的键名称,并且您想按该键的值进行排序。首先,您需要定义一个辅助函数:

function anyVal(obj) {
  for(var key in obj) {
    if(obj.hasOwnProperty(key)) {
      return obj[key]
    }
  }
}

现在排序很简单:

popularLocationsArray.sort(function(a,b) {return anyVal(a) - anyVal(b)});

关于javascript - 如何根据值对 JavaScript 中的对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7746590/

相关文章:

python - 按字母顺序从最高到最低和平均值对 csv 中的数据进行排序

python - 在 python 中排序字符串不起作用

Javascript 如果没有请点击此 JS,否则点击此

c# - 从代码隐藏打开新窗口

Java - 寻找比 PriorityQueue 更快的东西

c - 带分页的排序算法

JavaScript:对数组元素进行排序,其中 "truthy"字段值排在前面

javascript - 使用 jquery 根据数据属性获取输入下拉文本值

javascript - 如何在 NightwatchJS 的 Visual Studio 中获得智能感知

javascript - this.setAttribute 不是函数