javascript - 当键是动态的时,按值对对象数组进行排序

标签 javascript arrays sorting

我想像这样对数组对象进行排序。

var obj = [{"UMAIR":410},
        {"ALI":2177},   
        {"JOHN":410},
        {"ANTHENY":410},
        {"FRANKLY":410},
        {"FRONTY":534},
        {"SLIM":534},
        {"ASFUND":534}];

我想用每个对象的整数值对其进行排序。 我试图理解以下代码(我在网上找到的):

 obj.sort(function(a, b) {
    return a.price - b.price;
});

但在此代码中它使用 price 属性,但我这里没有任何特定属性。

最佳答案

您可以尝试排序功能...

obj.sort(function(a,b) {
   return a[Object.keys(a)[0]] - b[Object.keys(b)[0]];
});

相当于:

obj.sort(function(a,b) {
   var aValue = a[Object.keys(a)[0]];
   var bValue = b[Object.keys(b)[0]];
   if (aValue > bValue)
     return 1;
   else if (aValue < bValue)
     return -1;
   else
     return 0;
}); 

编辑,刚刚看到您的编辑,是的,您确实找到了它。 您还应该搜索如何从 json 中提取元素,在您的情况下是 对象.keys,

它返回一个包含键字符串的数组。

由于您的对象包含单个键,因此您可以从数组中获取第一个值 (0),然后对从 a 到 b 的值进行减法。

a,b 是数组的条目。它们是物体。

在此Link您可以检查排序功能如何工作

我提供的链接中的代码

function compare(a, b) {
  if (a is less than b by some ordering criterion) {
    return -1;
  }
  if (a is greater than b by the ordering criterion) {
    return 1;
  }
  // a must be equal to b
  return 0;
}

关于javascript - 当键是动态的时,按值对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41204157/

相关文章:

javascript - 显示阵列中的 6 个(不同的)图像,不显示重复项并每 x 秒重新加载一次

Java 使用冒泡排序对 ArrayList 进行排序

arrays - 两个已排序数组并集中的第 k 个最小元素

javascript - XMLHttpRequest 响应文本为空

javascript - 在knockoutjs上自动触发点击事件

javascript - 按值对相邻数组项进行分组的最佳方法

java - 生成所有唯一排列

algorithm - 将名称排序列表转换为等级排序列表

javascript - jQuery 验证 : make field only required if option is selected

javascript - 如何将多维数组从 PHP 传递到 Javascript?