如何比较嵌套数组中的元素

时间:2019-03-14 21:37:50

标签: javascript arrays multidimensional-array nested

我需要整理嵌套数组中的元素。

每个嵌套数组中都有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循环,但始终收到错误消息。

有人在这方面帮助我吗?

谢谢!

1 个答案:

答案 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; }