Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 상대 정렬

<시간/>

arr1과 arr2라는 두 개의 배열이 있다고 가정합니다. arr2의 요소는 별개이며 arr2의 모든 요소는 또한 arr1에 있습니다.

우리는 두 개의 이러한 배열을 취하고 arr1의 요소를 정렬하여 arr1의 항목 순서가 arr2와 동일하도록 JavaScript 함수를 작성해야 합니다. 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
]