我需要整理嵌套数组中的元素。
每个嵌套数组中都有1个字符串和1个整数。
var arr1 = [["2000", 2], ["11", 2], ["11", 2], ["10003", 4], ["22", 4], ["123", 6], ["1234000", 10], ["44444444", 32], ["9999", 36]]
我需要通过升序整数(而不是字符串)来整理数组。我可以这样做:
var res = arr1.sort(function(a, b) {
return a[1] - b[1];
});
但是,当2个整数具有相同的值时,我需要按其字符串排序(仅适用于匹配的整数,而不适用于数组的其余部分)。
结果应为:
[["11", 2], ["11", 2], ["2000", 2], ["10003", 4], ["22", 4], ["123", 6], ["1234000", 10], ["44444444", 32], ["9999", 36]]
我不知道如何做到这一点。我尝试了for循环,但始终收到错误消息。
有人在这方面帮助我吗?
谢谢!
答案 0 :(得分:2)
您可以通过对第一个索引进行排序来扩展排序。
顺便说一句,Array#sort
,对数组in situ进行排序,这意味着该数组会改变项目的顺序。
var array = [["2000", 2], ["11", 2], ["11", 2], ["10003", 4], ["22", 4]] ;
array.sort(function(a, b) {
return a[1] - b[1] || a[0].localeCompare(b[0]);
});
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }