0

我如何按字母顺序按键排序这个对象?

我试过了:

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"
4

3 回答 3

2

在 JavaScript 中不可能通过键对对象属性进行排序。如果需要,可以将对象的所有键放入数组中,对它们进行排序,然后按所需顺序使用属性。

于 2013-11-14T13:12:07.153 回答
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;
}
于 2013-11-14T13:15:00.260 回答
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]]);
于 2014-12-11T22:07:22.577 回答