在JavaScript中对数组数组进行排序

时间:2018-05-18 15:58:15

标签: javascript

我正在尝试对内部带有整数的数组进行排序,例如:

var array = [[123, 3], [745, 4], [643, 5], [643, 2]];

如何对其进行排序以返回类似

的内容
array = [[745, 4], [643, 2], [643, 5], [123, 3]];

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; });

这将按升序对整数数组进行排序。比较函数应该返回:

  • 如果要在b
  • 之前显示,则小于0的整数
  • 如果希望b出现在
  • 之前,则大于0的整数
  • 0如果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)