2017-06-29 52 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]);