JavaScript 中的相对排序
javascriptweb developmentfront end technologyobject oriented programming
假设我们有两个数组,即 arr1 和 arr2。arr2 的元素不同,并且 arr2 中的所有元素也都在 arr1 中。
我们需要编写一个 JavaScript 函数,该函数接受两个这样的数组并对 arr1 的元素进行排序,以使 arr1 中项目的相对顺序与 arr2 中的相同。 未出现在 arr2 中的元素应按升序放置在 arr1 的末尾。
例如− 如果两个输入数组是 −
const arr1 = [2,3,1,3,2,4,6,7,9,2,19]; const arr2 = [2,1,4,3,9,6];
那么输出应该是 −
const output = [2,2,2,1,4,3,3,9,6,7,19];
示例
const arr1 = [2,3,1,3,2,4,6,7,9,2,19]; const arr2 = [2,1,4,3,9,6]; const relativeSortArray = (arr1, arr2) => { const map = new Map(); const len = arr2.length; arr2.forEach((a, i) => { map.set(a, i); }); return arr1.sort((a, b) => { a = map.has(a) ? map.get(a) : len + a; b = map.has(b) ? map.get(b) : len + b; return a - b; }); }; console.log(relativeSortArray(arr1, arr2));
输出
控制台中的输出将是 −
[ 2, 2, 2, 1, 4, 3, 3, 9, 6, 7, 19 ]