我有两个数组,数据合并在一起,例如: [马克西米利安、莫里茨、汉斯]和 [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/