如果我有一個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