如何在javascript中对多维数组排序
我有一个数组,如下所示如何在javascript中对多维数组排序,javascript,jquery,sorting,multidimensional-array,Javascript,Jquery,Sorting,Multidimensional Array,我有一个数组,如下所示 var arry = [ [1, "Convention Hall", "Mumbai", 10, "XYZ Company"], [2, "Auditorium", "Delhi", 10, "ABC Company"], [3, "CenterHall", "Bangalore", 10, "ZZZ Company"], .... ] 我想根据数组的第三项按字母顺
var arry = [ [1, "Convention Hall", "Mumbai", 10, "XYZ Company"],
[2, "Auditorium", "Delhi", 10, "ABC Company"],
[3, "CenterHall", "Bangalore", 10, "ZZZ Company"],
....
]
我想根据数组的第三项按字母顺序对数组排序,即arry[n][2]
如何做到这一点。试试这个
//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];
});
您可以使用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);
使用排序函数,例如:
arry.sort(function(a,b){
return a[2] > b[2] ? 1 : -1;
});
函数需要一个函数作为参数,它接受两个参数并返回-1、0或1
中的任意一个
我非常喜欢函数式编程,所以我想到了这个。这提供了灵活性
因此,在本例中它已经被排序了?
arry.sort(函数(a,b){返回a[2]-b[2];})代码>在本例中已排序,但请检查我的答案。我更改了城市名称。由于排序是一种变异方法,所以不需要将其分配给新变量,那么a[2]===b[2]
呢?为什么不简单地返回first-second代码>?@Givi它可能无法对所有数据类型正常工作。例如,如果要比较的两个元素都是对象,它将返回NaN
。因此,我使函数更灵活,同时传递比较器函数:)
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]);
}
}
}
arry.sort(compareNthElements(1, basicComparator, true)); // Sorts first field and in reverse
arry.sort(compareNthElements(2, basicComparator)); // Sorts second field