按字母顺序按键排序关联数组/ javascript对象

时间:2013-11-14 13:04:32

标签: javascript arrays object

如何通过键按字母顺序排序此对象?

我试过了:

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"

3 个答案:

答案 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]]);