使用 JavaScript 按另一个数组对数组进行排序
假如我们有两个这样的数组 −
const arr1 = [1, 3, 2, 4, 5, 6]; const arr2 = [1, 2, 5];
我们需要编写一个接收两个此类数组的 JavaScript 函数。然后,我们的函数应返回一个新数组,其中包含 arr1 中的所有元素,但按照 arr2 的顺序进行排序。
例如,出现在两个数组中的元素应该首先按其在第二个数组中的顺序出现,然后是仅出现在第一个数组中的元素,保留其顺序。
示例
代码为 −
const arr1 = [1, 3, 2, 4, 5, 6]; const arr2 = [1, 2, 5]; const sortByReference = (arr1, arr2) => { const inBoth = el => arr1.indexOf(el) !== -1 && arr2.indexOf(el) !== -1; const sorter = (a, b) => { if(inBoth(a) && inBoth(b)){ return arr1.indexOf(a) - arr2.indexOf(b); } if(inBoth(a)){ return -1; }; if(inBoth(b)){ return 1; }; return 0; }; arr1.sort(sorter); }; sortByReference(arr1, arr2); console.log(arr1);
输出
控制台中的输出 −
[ 1, 2, 5, 3, 4, 6 ]
广告