我尝试对一个包含整数的数组进行排序,例如:
var array = [[123, 3], [745, 4], [643, 5], [643, 2]];
字符串我如何排序它才能返回如下内容?
array = [[745, 4], [643, 2], [643, 5], [123, 3]];
型
8yparm6h1#
你可以向Array.prototype.sort()传递一个自定义的比较函数,如下所示:
Array.prototype.sort()
var sortedArray = array.sort(function(a, b) { return a - b; });
字符串这将按照升序对整数数组进行排序。比较函数应该返回:
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了解更多信息。
aemubtdh2#
你可以使用sort方法,先按第一个元素排序,然后按第二个元素排序。
sort
var array = [[123, 3], [745, 4], [643, 5], [643, 2]]; array.sort(([a, b], [c, d]) => c - a || b - d); console.log(array)
字符串
fnvucqvd3#
假设你想按例子中的第一个索引排序,sort函数可以解决你的问题。
let ans = [[123, 3], [745, 4], [643, 5], [643, 2]].sort( (a, b) => { return b[0] - a[0] }) console.log(ans)
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)
ycl3bljg5#
如果你想按照第一个元素的升序对子数组进行排序,我们可以这样做:
arrayToSort.sort((a, b) =>a[0] - b[0]);
5条答案
按热度按时间8yparm6h1#
你可以向
Array.prototype.sort()
传递一个自定义的比较函数,如下所示:字符串
这将按照升序对整数数组进行排序。比较函数应该返回:
0
的整数,如果你想让a
出现在b
之前0
的整数,如果你想让b
出现在a
之前0
如果a
和b
相同所以,对于这个例子,你会想要这样的东西:
型
如果你想对每个子数组的两个元素进行排序(即按第一个元素降序排序,如果它们相同,则按第二个元素降序排序),你可以这样做:
型
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort了解更多信息。
aemubtdh2#
你可以使用
sort
方法,先按第一个元素排序,然后按第二个元素排序。字符串
fnvucqvd3#
假设你想按例子中的第一个索引排序,sort函数可以解决你的问题。
字符串
vs3odd8k4#
具有通用长度(不限于2或相等)的数组的解决方案可以如下:
字符串
ycl3bljg5#
如果你想按照第一个元素的升序对子数组进行排序,我们可以这样做:
字符串