我有一个数组如下
var arry = [ [1, "Convention Hall", "Mumbai", 10, "XYZ Company"],
[2, "Auditorium", "Delhi", 10, "ABC Company"],
[3, "CenterHall", "Bangalore", 10, "ZZZ Company"],
....
]
我想根据数组的第三项按字母顺序对数组进行排序,即 arry [n] [2]
如何做到这一点。
答案 0 :(得分:3)
您可以使用arry.sort()
。默认值为字母数字和升序。
所以它会是:
var arry = [ [1, "Convention Hall", "Dangalore", 10, "XYZ Company"],
[2, "Auditorium", "Belhi", 10, "ABC Company"],
[3, "CenterHall", "Aumbai", 10, "ZZZ Company"],
];
var x =arry.sort(function(a,b){ return a[2] > b[2] ? 1 : -1; });
alert(x);
答案 1 :(得分:2)
Array.prototype.sort
函数需要一个函数作为参数,它接受两个参数并返回-1, 0 or 1
中的任何一个。
我是函数式编程的忠实粉丝,所以我想出了这个。这提供了灵活性。
function basicComparator(first, second) {
if (first === second) {
return 0;
} else if (first < second) {
return -1;
} else {
return 1;
}
}
function compareNthElements(n, comparatorFunction, reverse) {
return function(first, second) {
if (reverse === true) {
return comparatorFunction(second[n], first[n]);
} else {
return comparatorFunction(first[n], second[n]);
}
}
}
多数民众赞成。现在,像这样调用sort
函数
arry.sort(compareNthElements(1, basicComparator, true)); // Sorts first field and in reverse
arry.sort(compareNthElements(2, basicComparator)); // Sorts second field
答案 2 :(得分:1)
使用排序功能,例如:
arry.sort(function(a,b){
return a[2] > b[2] ? 1 : -1;
});
答案 3 :(得分:0)
试试这个
//WITH FIRST COLUMN
arry = arry.sort(function(a,b) {
return a[0] > b[0];
});
//WITH SECOND COLUMN
arry = arry.sort(function(a,b) {
return a[1] > b[1];
});
//WITH THIRD COLUMN
//and you want this code below
arry = arry.sort(function(a,b) {
return a[2] > b[2];
});