Javascript将数组的排序顺序扩展到另一个相同大小的数组

Isa*_*ton 1 javascript arrays sorting

我有两个数组

[10,8,0,5,3]
[2,4,1,1,3]
Run Code Online (Sandbox Code Playgroud)

我想将第一个数组按降序排序,所以它变成了[10,8,5,3,0]. [0, 1, 2, 3, 4]排序后的第一个数组的原始索引变为[0, 1, 3, 4, 2]例如,原始数字5在第三个索引中,排序后,它来到2索引。现在,我想将排序后的索引应用于第二个数组[2,4,1,1,3],所以它变成了[2, 4, 1, 3, 1]有没有一种快速简便的方法来做到这一点?

到目前为止,我提出了 2 个解决方案:

  1. 构造一个保存键值对的对象,键是第一个数组的值,值是第二个数组,例如
{'10': 2, '8': 4, '0': 1, '5': 1, '3':3 }`
Run Code Online (Sandbox Code Playgroud)

然后根据键值对对象进行排序。然后对值进行排序,然后从对象中检索所有值。

  1. 构造一个映射,其中第一个数组的值指向第二个数组的每个值。对地图进行排序,并检索每个值。

这两种方法看起来有点复杂。我想知道是否有更简单的方法,例如利用 array.sort() 函数

Cer*_*nce 5

如果将数组压缩到一个数组中,其中每个项目都包含i来自两个数组的第 th 个值,则可以很容易地对较大的数组进行排序:

const arr1 = [10,8,0,5,3];
const arr2 = [2,4,1,1,3];
const zipped = arr1.map((num, i) => [num, arr2[i]]);
zipped.sort((a, b) => b[0] - a[0]);
console.log(zipped.map(arr => arr[0]));
console.log(zipped.map(arr => arr[1]));
Run Code Online (Sandbox Code Playgroud)