如果我有一个JavaScript对象是这样的:如何对这个javascript对象进行排序?
{ 'apples':14, 'oranges': 1, 'bananas':4 }
我如何排序是一个数组,按降序排列,基于价值?
结果:
[ 'apples', 'bananas', 'oranges' ]
因为如图14所示,4个,1 ...降序
如果我有一个JavaScript对象是这样的:如何对这个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);});
现在由值排序。
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);
只是一个供参考:因为JavaScript对象的构建方式,你应该始终包的换里面在具有'hasOwnProperty'的循环中:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/hasOwnProperty#section_8 – OverZealous
如果它是您自己的代码,并且您知道发生了什么,并且没有人扩展对象类对于'fo'有不友好的附加属性r'循环,没有必要包装它。如果你不知道项目中发生的一切,那么我同意保护它免于流浪财产更安全。 – jfriend00
好的,我为那些允许将对象原型与他们的项目混为一谈的人(我不允许的东西)添加了选项。 – jfriend00