2017-06-29 38 views
0

排序鍵的對象,我有以下對象:如何在JavaScript

Object { WK23: 12.52573059875292, WK22: 122.2625975869411, WK21: 
78.48714311048059, WK20: 87.14214810403018, WK26: 78.52625051674245, WK25: 77.64480983891451, WK24: 67.42158281711342, WK2: 
78.420343898902, WK3: 77.91344340707354, WK4: 77.29048185059888 } 

是否有可能通過按鍵對它進行排序,從WK1到WK100? 如何在JavaScript中做到這一點?

在此先感謝,

+0

請檢查此鏈接https://開頭計算器.com/questions/5467129/sort-javascript-object-by-key –

+0

Objects is根據定義,不是用Javascript訂購的。如果你想要它,你應該把它轉換成一個數組 –

+0

感謝球員的答案。我是JS的初學者,如果我將它轉換爲數組,我能否回到對象?你有什麼樣的例子嗎?謝謝 –

回答

0

試試這個,你可以更改訂單,並分配給不同的對象

var unordered={ WK23: 12.52573059875292, WK22: 122.2625975869411, WK21: 78.48714311048059, WK20: 87.14214810403018, WK26: 78.52625051674245, WK25: 77.64480983891451, WK24: 67.42158281711342, WK2: 78.420343898902, WK3: 77.91344340707354, WK4: 77.29048185059888 } 
 

 
console.log(JSON.stringify(unordered)); 
 

 

 
const ordered = {}; 
 
Object.keys(unordered).sort(function(a,b){ 
 
var a=a.split("WK")[1]; 
 
var b=b.split("WK")[1]; 
 
return a-b 
 
}).forEach(function(key) { 
 
    ordered[key] = unordered[key]; 
 
}); 
 

 
console.log(JSON.stringify(ordered));

0

不,你不能。對象鍵不是有序的。如果你想排序對象中的條目,你將不得不將它轉換成一個數組。

var obj = {"WK23": 12.52573059875292, "WK22": 122.2625975869411}; 
var result = Object.keys(obj).map(function(key) { 
    return [key, obj[key]]; 
}); 

// the result Array can then be sorted... 
// result = [["WK23": 12.52573059875292], ["WK22": 122.2625975869411]] 

var sorted = result.sort(function(a,b){ 
    var num_a = parseInt(a[0].replace("WK", "")); 
    var num_b = parseInt(b[0].replace("WK", "")); 
    return num_a > num_b; 
}); 
// sorted = [["WK22": 122.2625975869411], ["WK23": 12.52573059875292]] 
0

在這裏你去

const sample = { WK23: 12.52573059875292, WK22: 122.2625975869411, WK21: 
78.48714311048059, WK20: 87.14214810403018, WK26: 78.52625051674245, WK25: 77.64480983891451, WK24: 67.42158281711342, WK2: 
78.420343898902, WK3: 77.91344340707354, WK4: 77.29048185059888 }; 

const sorted = Object.keys(sample).sort().map(key => sample[key]);