我正在尝试对内部带有整数的数组进行排序,例如:
var array = [[123, 3], [745, 4], [643, 5], [643, 2]];
如何对其进行排序以返回类似
的内容array = [[745, 4], [643, 2], [643, 5], [123, 3]];
答案 0 :(得分:0)
您可以使用sort
方法,先按第一个元素排序,然后按第二个排序。
var array = [[123, 3], [745, 4], [643, 5], [643, 2]];
array.sort(([a, b], [c, d]) => c - a || b - d);
console.log(array)
答案 1 :(得分:0)
您可以将自定义比较函数传递给Array.prototype.sort(),如下所示:
var sortedArray = array.sort(function(a, b) { return a - b; });
这将按升序对整数数组进行排序。比较函数应该返回:
因此,对于这个例子,你会想要类似的东西:
var sortedArray = array.sort(function(a, b) {
return b[0] - a[0];
});
如果你想对每个子数组的两个元素进行排序(即按第一个元素降序排序,那么如果它们相同然后按第二个元素降序排序),你可以这样做:
var sortedArray = array.sort(function(a, b) {
if (a[0] == b[0]) {
return a[1] - b[1];
}
return b[0] - a[0];
});
有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort。
我希望这有帮助!
答案 2 :(得分:0)
假设您要按示例中的第一个索引排序,sort函数可用于解决您的问题。
let ans = [[123, 3], [745, 4], [643, 5], [643, 2]].sort( (a, b) => {
return b[0] - a[0]
})
console.log(ans)