在JavaScript中对数组进行排序

myss37ts  于 2023-11-15  发布在  Java
关注(0)|答案(5)|浏览(106)

我尝试对一个包含整数的数组进行排序,例如:

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

字符串
我如何排序它才能返回如下内容?

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

8yparm6h

8yparm6h1#

你可以向Array.prototype.sort()传递一个自定义的比较函数,如下所示:

var sortedArray = array.sort(function(a, b) { return a - b; });

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

  • 一个小于0的整数,如果你想让a出现在b之前
  • 一个大于0的整数,如果你想让b出现在a之前
  • 0如果ab相同

所以,对于这个例子,你会想要这样的东西:

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了解更多信息。

aemubtdh

aemubtdh2#

你可以使用sort方法,先按第一个元素排序,然后按第二个元素排序。

var array = [[123, 3], [745, 4], [643, 5], [643, 2]];
array.sort(([a, b], [c, d]) => c - a || b - d);
console.log(array)

字符串

fnvucqvd

fnvucqvd3#

假设你想按例子中的第一个索引排序,sort函数可以解决你的问题。

let ans = [[123, 3], [745, 4], [643, 5], [643, 2]].sort( (a, b) => {
  return b[0] - a[0]
})

console.log(ans)

字符串

vs3odd8k

vs3odd8k4#

具有通用长度(不限于2或相等)的数组的解决方案可以如下:

var array = [[123, 3], [745, 4], [643, 5], [643, 2]];
array.sort((a,b)=>
    {
        for(let i=0;i<a.length && i<b.length;i++){
            if(a[i]!==b[i]){
                return a[i]-b[i];
            }

        }
        return a.length-b.length;
    }
)
console.log(array)

字符串

ycl3bljg

ycl3bljg5#

如果你想按照第一个元素的升序对子数组进行排序,我们可以这样做:

arrayToSort.sort((a, b) =>a[0] - b[0]);

字符串

相关问题