使用纯javascript对相对于另一个数组中元素位置的数组进行排序

时间:2018-05-16 11:36:58

标签: javascript arrays

假设我有两个数组:

arr1 = [64, 23, 35, 11, 55];
arr2 = [34, 10, 54, 12, 4];

如果我重新排列(或排序)arr1,则arr2的元素也应根据arr1的位置(或索引)重新排列。

例如:如果我排序arr1

arr1 = [11, 23, 35, 55, 64];

然后arr2中的元素应为

arr2 : [12, 10, 54, 4, 34 ]  (arranged according to index of arr1).

有可能吗?我发现它可以在同一个数组中完成,但我尝试使用两个不同的数组。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您可以在排序第一个数组之前存储原始位置,然后将其应用于第二个数组:

 // Wrap original positions and values:
 const withPos = arr1.map((v, i) => ({v, i}));
 // Sort
 withPos.sort((a, b) => a.v - b.v);
 // Unwrap & apply sort to second array:
 arr1 = withPos.map(e => e.v);
 arr2 = withPos.map(e => arr2[e.i]);