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

标签 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 循环,但一直出现错误。

有人可以帮我吗?

谢谢!

最佳答案

您可以通过使用第一个索引进行排序来扩展排序。

顺便说一句,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; }

关于javascript - 如何比较嵌套数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55172409/

相关文章:

javascript - 循环导入react中的图像

arrays - 如何在 Matlab 中将 NaN 分配给值 j < k

java - java中元素未写入数组

c - 尝试打印存储在二维数组中的字符

javascript - 平均JS堆栈,创建一个处理两个不同路径的工厂

javascript - 使用 Javascript 基于 Cookie 的重定向

python - 如何找到重新排序的 numpy 数组的索引?

javascript - 为什么这个函数返回 "undefined"而不是数组?

javascript - 表单内输入字段的循环焦点

php - 用于重置数组索引的内置 PHP 函数?