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]]

我使用 ExtendScript,它是 Adob​​e 的 Javascript 的扩展版本。Javascript怎么可能?任何建议将不胜感激。提前致谢

4

1 回答 1

4

数字翻转了。更新了工作示例。

您可以使用Array.prototype.sort then 循环选项。(请确保在您的字符串周围加上引号!)

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 回答