javascript - 根据一个数组的长度对两个数组进行排序

标签 javascript arrays sorting

我有两个数组,数据合并在一起,例如: [马克西米利安、莫里茨、汉斯]和 [5,1,2000]

现在我必须根据名称的长度对第一个数组进行排序,并将数字保持在正确的位置。结果应该是: [汉斯,莫里茨,马克西米利安] [2000,1,5]

通常您可以组合两个数组,对它们进行排序,然后将它们分开。简单的。但在我的例子中,数字有不同的长度,所以不能保证正确的顺序。 如果我合并并排序,结果将是: [莫里茨,汉斯,马克西米利安] [1,2000,5] 这是错误的。 有人知道如何解决这个问题吗?

最佳答案

您可以获取索引,对它们进行排序并映射两个数组的值。

var array1 = ['maximilian', 'moritz', 'hans'],
    array2 = [5, 1, 2000],
    indices = array1.map((_, i) => i);
    
indices.sort((a, b) => array1[a].length - array1[b].length);

array1 = indices.map(i => array1[i]);
array2 = indices.map(i => array2[i]);

console.log(array1);
console.log(array2);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 根据一个数组的长度对两个数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49692001/

相关文章:

java - 希望使用 CompareTo 创建示例数据并将其添加到排序集中

javascript - Array.sort safari 问题

javascript - Material UI 更改输入的事件颜色

javascript - Angular: *ng对于字符串数组,删除 '/' 符号

Java 迭代二维数组

php - 如何检查字符串是否在数组中?

Javascript - 使用索引替换数组中的多个元素

Java 对 List<Value> 的 HashMap 值进行排序

javascript - 在 Fullcalendar 中,最长的事件总是垂直排列在最前面吗?

javascript - VSCODE Javascript ----如何隐式导入库