2

私は JavaScript をまったく初めて使用します。私の技術用語について、お気軽に訂正してください。

リストに追加される一連のキーと値のペアがあります。リストは、キーの値が表示されるオプションであるドロップダウン メニューとして表示され、キーは HTML タグに含まれます。上司から、表示された値をアルファベット順に並べ替えるように言われました。

ここまでで、オブジェクトを for...in ループで繰り返し処理し、各キーの値を配列に抽出しました。配列をソートし、値をアルファベット順にリストに追加できるようになりました。

キーをそれぞれの値にリンクしたままにして、値を追加するときに適切なキーも追加できるようにする最良の方法は何ですか?

ありがとう。

短いバージョン: すべての値を配列にコピーしてアルファベット順に並べ替えた後、キーをそれらの値に戻すにはどうすればよいですか?

4

3 に答える 3

2

これは、別の配列がなくても実行できます。比較機能 (つまり、コンパレーター) を使用するだけです。例えば:

var arr = [
    {k: "c", v: 3},
    {k: "b", v: 2},
    {k: "d", v: 4},
    {k: "a", v: 1},
    {k: "e", v: 5}
];

//sort by value
arr.sort(function(a, b) {
   return a.v - b.v;
});

これにより、以下が得られます。

[
   {
      "k": "a",
      "v": 1
   },
   {
      "k": "b",
      "v": 2
   },
   {
      "k": "c",
      "v": 3
   },
   {
      "k": "d",
      "v": 4
   },
   {
      "k": "e",
      "v": 5
   }
]

文字列値に基づいて並べ替えるには、次のようにします。

arr.sort(function(a, b) {
    return a.v.localeCompare(b.v);
});
于 2013-07-24T16:01:11.610 に答える
0

値を単独でソートしないでください。2D 配列 (配列の配列) をソートしてください。

だからそれは次のようになります

Key1 | Val1
-----------
Key2 | Val2
-----------
Key3 | Val3

次に、値に基づいて並べ替えますが、両方を移動します。

ソートすると、次のようになります

Key3 | Val3
-----------
Key1 | Val1
-----------
Key2 | Val2

そして、最初の値を参照するときは、array[0][1]その値へのキーについては を実行しますarray[0][0]

于 2013-07-24T16:00:43.970 に答える