如何通过键按字母顺序排序此对象?
我试过了:
racks.sort();
对象机架像这样填充:
(Statdev是一个字符串,kartnr和bitnrk是整数)
racks[jPunten[i].STATDEV] = {
label: '',
punkt: [{
x: jPunten[i].KARTNR,
y: jPunten[i].BITNRK}]
一些Firebug输出(我也注意到在firebug中对象是按字母顺序排序的):
racks
[]
DAY
Object { punkt=[8], label=""}
label
""
punkt
[Object { x="12", y="1"}, Object { x="12", y="2"}, Object { x="12", y="3"}, 5 meer...]
0
Object { x="12", y="1"}
1
Object { x="12", y="2"}
2
Object { x="12", y="3"}
3
Object { x="12", y="4"}
4
Object { x="12", y="5"}
5
Object { x="12", y="6"}
6
Object { x="12", y="7"}
7
Object { x="12", y="8"}
LSF01
Object { punkt=[1], label=""}
label
""
punkt
[Object { x="1", y="10"}]
0
Object { x="1", y="10"}
x
"1"
y
"10"
答案 0 :(得分:1)
在JavaScript中无法按键对对象属性进行排序。如果需要,可以将对象的所有键放入数组,对它们进行排序,然后按所需顺序处理属性。
答案 1 :(得分:1)
试试这个:
sort = function(obj, comparator) {
var array = [];
for (var i in obj) {
array.push([obj[i], i]);
}
array.sort(function(o1, o2) {
return comparator(o1[0], o2[0]);
});
var newObj = {};
for (var i = 0; i < array.length; i++) {
newObj[array[i][1]] = array[i][0];
}
return newObj;
}
答案 2 :(得分:0)
做两个阵列:
//普通对象表示法
var personObject = {firstName:"John", lastName:"Doe"};
alert('personObject.firstName - ' + personObject.firstName);
//使用对象数组表示法添加到对象,注意:这样做会将数组转换为对象
personObject["age"] = 46;
//键数组,已排序
var keysArray = ["firstName", "lastName"];
keysArray[keysArray.length] = "age";
keysArray.sort();
//获取对象值,使用数组对象表示法,数组为键
alert('personObject[keysArray[0]] - ' + personObject[keysArray[0]]);