0

私のjsonオブジェクトは次のようになります:

events:{
"2": {
    "action": "some value",
    "property": "some value"
}
"0": {
    "action": "some value",
    "property": "some value"
}
"1": {
    "action": "some value",
    "property": "some value"
}

}

オブジェクトのプロパティを並べ替える必要があります。とにかくこれを行うことはありますか?結果は次のようになります。

events:{
"0": {
    "action": "some value",
    "property": "some value"
}
"1": {
    "action": "some value",
    "property": "some value"
}
"2": {
    "action": "some value",
    "property": "some value"
}

}
4

2 に答える 2

1

私のコメントに関連して、代わりにこの方法で保存します。配列を使用し、それらのインデックスを ID として保存します。次に、ソートアルゴリズムを使用してそれらを移動できます。ここに、あなたが見たいかもしれないソートアルゴリズムのいくつかのサンプルがあります

events:[
    {
        "id" : 2,
        "action": "some value",
        "property": "some value"
    },
    {
        "id" : 0,
        "action": "some value",
        "property": "some value"
    },
    {
        "id" : 1,
        "action": "some value",
        "property": "some value"
    }
]
于 2012-04-14T07:12:25.780 に答える
1

@Josephが言ったように、順序を保証するには、配列にする必要があります。

var events = {
  "2": {
    "action": "some value",
    "property": "some value"
  },
  "0": {
    "action": "some value",
    "property": "some value"
  },
  "1": {
    "action": "some value",
    "property": "some value"
  }
};

var eventOrder = [];

for( var prop in events ){
  if( events.hasOwnProperty( prop ) ){
    eventOrder.push( prop );
  }
}

eventOrder.sort();

注: 文字列を使用しているため、これはアルファベット順でソートされるため、アイテムが 9 つを超える場合は、eventOrder が [ "1", "10", "2", ... ] になる可能性があります。 . これが望ましくない場合は、配列に格納する前に parseInt を実行し、後で検索を行うときに文字列を強制することができます。

于 2012-04-14T07:17:57.843 に答える