2017-05-04 76 views

回答

5

let obj = {a: 24, b: 12, c:21, d:15}; 
 

 
// Get an array of the keys: 
 
let keys = Object.keys(obj); 
 

 
// Then sort by using the keys to lookup the values in the original object: 
 
keys.sort(function(a, b) { return obj[a] - obj[b] }); 
 

 
console.log(keys);

注意上面可以在一行中如果需要的話Object.keys(obj).sort(...)完成。顯示將用於數值工作簡單.sort()比較函數只(交換ab以相反的方向排序),但因爲這是什麼的問題,我認爲這很好......

+0

這隻適用於數值,所以如果你的數組有其他類型,你必須定義完整的'compareFunction'。 – Blender

+0

'Object.keys()'返回一個數組嗎? –

+0

是的,'Object.keys()'返回一個數組。如果需要,你可以在一行中完成上述操作,如Object.keys(obj).sort(...)'。 @Blender - 是的,但沒有。我們不能真正定義一個通用的排序比較器來迎合所有類型,因爲這些值可能是嵌套對象或任何東西。 – nnnnnn

1
var obj = { 
    a: 24, b: 12, c:21, d:15 
}; 
var sortable = []; 
for (var x in obj) { 
    sortable.push([x, obj[x]]); 
} 

sortable.sort(function(a, b) { 
    return a[1] - b[1]; 
}); 

console.log(sortable) 
0

這裏是這樣的獲得排序的對象和得到的回報排序的對象

let sortedObject = {} 
sortedObject = Object.keys(yourObject).sort((a, b) => { 
         return yourObject[a] - yourObject[b] 
        }).reduce((prev, curr, i) => { 
         prev[i] = yourObject[curr] 
         return prev 
        }, {}); 

您可以自定義排序功能根據您的要求

相關問題