0

私は次のような配列を持っています:

markerArray[i] = [i, title, cat];

この配列は、コンテンツを動的に追加するforループ内にあります

したがって、結果は次のようになります。

markerArray[0] = [0, A title, A];
markerArray[1] = [1, A title new, B];
markerArray[3] = [3, A title, E];
markerArray[4] = [4, A title, A];

だから私の質問は、出力がA、BCなどやタイトル、またはこのように配列内から取得したものに基づいて出力されるように配列を並べ替えることができますか、または可能ですか?最後の(カテゴリ)はアルファベット順であることに注意してください今:

    markerArray[0] = [0, A title, A];
    markerArray[1] = [4, A title, A];
    markerArray[2] = [1, A title new, B];
    markerArray[3] = [3, A title, E];

これも可能ですか?

4

5 に答える 5

2

試す -

var markerArray = new Array();
markerArray[0] = [0, "A title", "A"];
markerArray[1] = [1, "A title new", "B"];
markerArray[3] = [3, "A title", "E"];
markerArray[4] = [4, "A title", "Z"];
markerArray[5] = [5, "A title", "A"];


markerArray.sort(function(a, b) {
   var comp1 = a[2];
   var comp2 = b[2];
   return (comp1 < comp2) ? -1 : (comp1 > comp2) ? 1 : 0;
})

alert(markerArray);
于 2011-09-29T10:13:46.607 に答える
1

Arrayオブジェクトで使用できるsort関数を使用する必要があります。この関数/メソッドは、カスタムユーザー関数を受け入れて、要素の並べ替え方法を決定します。

function customSorter( a, b )
{
    var comp1 = a[2];
    var comp2 = b[2];
    return (comp1 < comp2) ? -1 : (comp1 > comp2) ? 1 : 0;
}
var markerArray = new Array();
markerArray[0] = [0, "A title", "A"];
markerArray[1] = [1, "A title new", "B"];
markerArray[3] = [3, "A title", "E"];
markerArray[4] = [4, "A title", "Z"];
markerArray[5] = [5, "A title", "A"];

markerArray.sort( customSorter );

役立つ情報:https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort

于 2011-09-29T10:09:23.567 に答える
0

あなたはこの種のものを試すことができます:

   markerArray.sort(function(a,b){ 
      for (i = 0; i <= 3 ; i++) {
         if (a[i] <> b[i]) {
            if (a[i] < b[i]) return -1;
            if (a[i] > b[i]) return 1;
         }
      }
      return 0;
   });

これは最初の要素でソートしようとします。それらが同一である場合は、2番目の要素でソートしようとし、以下同様に3番目の要素でソートします。

[編集]いくつかの興味深いリンクを追加します(他の回答も参照してください):

于 2011-09-29T10:11:49.213 に答える
0

カスタムソート機能を使用します。それを行う方法のドキュメントを読んでください。

于 2011-09-29T10:07:13.250 に答える
0

比較関数をパラメーターとしてArray.sortメソッドに渡し、比較関数内に比較ロジックを記述できます。ここを参照してくださいhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort

于 2011-09-29T10:07:52.030 に答える