[英]How do I sort this javascript object?
如果我有这样的JavaScript对象:
{ 'apples':14, 'oranges': 1, 'bananas':4 }
如何根据值将其排序为降序排列的数组?
结果:
[ 'apples', 'bananas', 'oranges' ]
因为14、4、1 ...降序
将所有键从对象中拉到数组中并对数组进行排序。
var o = { 'apples':14, 'oranges': 1, 'bananas':4 };
var a = [];
for (var key in o) {
a.push(key);
}
a.sort();
如果您认为需要防止以不友好的方式(或不知道)添加到对象原型的属性,那么您应该这样做:
var o = { 'apples':14, 'oranges': 1, 'bananas':4 };
var a = [];
for (var key in o) {
if (o.hasOwnProperty(key)) {
a.push(key);
}
}
a.sort();
编辑:现在,原始问题已更改,并且要求现在是按原始对象中的值按顺序对键进行排序,这将必须以其他方式完成:
var o = { 'apples':14, 'oranges': 1, 'bananas':4 };
var a = [];
for (var key in o) {
if (o.hasOwnProperty(key)) {
a.push(key);
}
}
a.sort(function(x, y) {return(o.y - o.x);});
这是我解决这个问题的方法:
var o={ 'apples':14, 'oranges': 1, 'bananas':4 };
var a=[];
for(var fruit in o)
{
if(o[fruit])
a[fruit]=o[fruit]; i.e // a[apples]=14;
}
a.sort(function(a,b){return Number(a)-Number(b);});
现在,a按值排序。
console.log("Sorted Fruits:")
for(var fruit in o)
{
if(o[fruit])
console.log(fruit);
}
这是ES5的实现方法:
var fruit = { 'apples':14, 'oranges':1, 'grapefruit':70, 'bananas':4 }
var orderedByDescendingQuantities = Object.keys(fruit).sort(function (x, y) {
return fruit[y] - fruit[x];
});
alert(orderedByDescendingQuantities);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.