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 に答える