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

Int*_*ser 5 javascript arrays sorting

我有两个数组,数据合并,如:[maximilian,moritz,hans]和[5,1,2000]

现在我必须根据名称的长度对第一个数组进行排序,并将数字保存在正确的位置.结果应该是:[hans,moritz,maximilian] [2000,1,5]

通常,您可以组合两个数组,对它们进行排序然后将它们分开.简单.但在我的情况下,数字有不同的长度,所以不保证正确的顺序.如果我合并然后排序,结果将是:[moritz,hans,maximilian] [1,2000,5],这是错误的.任何人都知道如何解决这个问题?

Nin*_*olz 7

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

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);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)

  • 我只看到一个临时数组。 (2认同)