簡體   English   中英

如何對該JavaScript對象進行排序?

[英]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);

看到http://jsfiddle.net/gh5x8/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM