您好我有以下问题:
我有一个二维数组,如下所示:
[[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? 任何建议将不胜感激。 提前致谢
答案 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;
})
请注意,我假设所有数组的长度相同,并且简单的<
和>
足以进行比较。如果您的需求不同,那么适应它应该是微不足道的。