二维数组的排序

时间:2013-05-15 16:12:53

标签: javascript extendscript

您好我有以下问题:

我有一个二维数组,如下所示:

[[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,它是Adobe的Javascript扩展版本。 这怎么可能用Javascript? 任何建议将不胜感激。 提前致谢

1 个答案:

答案 0 :(得分: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/