0

こんにちは、次の質問があります。

次のような二次元配列があります。

[[2, C, 22, 22, 8]
[2, C, 22, 22, 7]
[2, C, 22, 22, 10]
[1, R, 45, 45, 4]
[1, R, 45, 45, 3]
[1, R, 45, 45, 2]
[1, R, 45, 45, 1]
[1, R, 150, 100, 6]
[1, R, 150, 100, 5] 
[1, C, 22, 22, 9]]

そして、最初に列 1、次に列 2、次に列 3、次に列 4、次に列 5 のデータを並べ替えます。すべて降順。取得したい結果は次のとおりです。

[[2, C, 22, 22, 10]
[2, C, 22, 22, 8]
[2, C, 22, 22, 7]
[1, R, 150, 100, 6]
[1, R, 150, 100, 5]
[1, R, 45, 45, 4]
[1, R, 45, 45, 3]
[1, R, 45, 45, 2]
[1, R, 45, 45, 1]
[1, C, 22, 22, 9]]

Adobe用のJavascriptの拡張版であるExtendScriptを使用しています。Javascriptでこれはどのように可能ですか? どんな提案でも大歓迎です。前もって感謝します

4

1 に答える 1

4

数字が反転していました。実際の例で更新されました。

Array.prototype.sort その後、オプションをループして使用できます。(ただし、文字列を必ず引用符で囲んでください!)

var x = [[2, "C", 22, 22, 8],
[2, "C", 22, 22, 7],
[2, "C", 22, 22, 10],
[1, "R", 45, 45, 4],
[1, "R", 45, 45, 3],
[1, "R", 45, 45, 2],
[1, "R", 45, 45, 1],
[1, "R", 150, 100, 6],
[1, "R", 150, 100, 5] ,
[1, "C", 22, 22, 9]];


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

    }
    return 0;
})

すべての配列が同じ長さであり、比較には単純<で十分であると想定していることに注意してください。>ニーズが異なる場合、それに適応するのは簡単です。

作業例: http://jsfiddle.net/zSHw9/

于 2013-05-15T16:18:28.303 に答える