我想像这样对数组对象进行排序。
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/