0

私は次のようなオブジェクトの配列を持っています:

var array = {
    "112" : {
             "id": "3",
             "name": "raj"
    },
    "334" : {
             "id": "2",
             "name": "john"
    },
    "222" : {
             "id": "5",
             "name": "kelvin"
    }
}

次に、配列を昇順で並べ替えてから、配列にid復元します。使ってみsort()ましたができませんでした。配列からのデータを表示するときにソートされるようにする方法を教えてください。

4

6 に答える 6

1
var array = {
    "112" : {
         "id": "3",
         "name": "raj"
    },
    "334" : {
         "id": "2",
         "name": "john"
    },
    "222" : {
         "id": "5",
         "name": "kelvin"
    }
}
var sortedObject = Array.prototype.sort.apply(array);

result:
{
    "112": {
        "id": "3",
        "name": "raj"
    },
    "222": {
        "id": "5",
        "name": "kelvin"
        },
    "334": {
        "id": "2",
        "name": "john"
    }
}
于 2015-03-04T15:56:37.540 に答える
1

コードがオブジェクトの配列であることを意味していると仮定します。つまり、

var unsortedArray = [
    { id: 3, name: "raj" },
    { id: 2, name: "john" },
    { id: 5, name: "kelvin" } 
];

次に、id を比較する関数を Array.sort() に渡すことで、id で並べ替えることができます。

var sortedArray = unsortedArray.sort(function(a, b) {
    return a.id - b.id 
});

他の人が指摘したように、あなたが持っているのはオブジェクトを含むオブジェクトであり、配列ではありません。

于 2012-06-07T12:39:35.230 に答える
0

これは配列ではなく、オブジェクトです(または、構文エラーがなかった場合はオブジェクトになります(=:)。注文はありません。

代わりに配列を使用することもできます(現在のプロパティ名をサブオブジェクトのキーの値にします)。

または、forループを使用してキー名の配列を作成し、それを並べ替えて、オブジェクトに順番にアクセスするための基礎として使用することもできます。

于 2012-06-07T12:31:02.037 に答える
0

これはオブジェクトですが、次のように配列をソートできます。

実際のデモ: http://jsfiddle.net/BF8LV/2/

この助けを願って、

コード

   function sortAscending(data_A, data_B)
{
    return (data_A - data_B);
}
var array =[ 9, 10, 21, 46, 19, 11]
array.sort(sortAscending) 
alert(array);​
于 2012-06-07T12:32:45.857 に答える
0

が他の種類のオブジェクトで使用Array.sort できることを知っている人は多くありませんが、それらには length プロパティが必要です。

array.length = 334;
Array.prototype.sort.call(array, function(a, b) {return a.id - b.id;});

残念ながら、あなたの「配列」があなたのような「穴」でいっぱいの場合、これはうまくいきません。

于 2012-06-07T12:41:22.213 に答える
0

JavaScript オブジェクトは、定義上順不同です。言語仕様では、オブジェクトのプロパティを 2 回連続して反復処理した場合、2 回目も同じ順序で出力されることは保証されていません。

順序付けが必要な場合は、配列とArray.prototype.sortメソッドを使用します。

于 2012-06-07T12:34:17.993 に答える