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

JavaScript에서 두 번째보다 첫 번째 배열 최대화

<시간/>

문제

길이가 같은 두 개의 숫자 배열인 arr1과 arr2를 받는 JavaScript 함수를 작성해야 합니다.

우리 함수는 첫 번째 배열 arr1의 요소를 섞어서 최대 요소 수가 배열 arr2의 해당 요소보다 크도록 해야 합니다. 그러면 함수는 섞인 배열을 반환해야 합니다.

예를 들어 함수에 대한 입력이

인 경우

입력

const arr1 = [3, 5, 12, 19];
const arr2 = [2, 9, 3, 12];

출력

const output = [3, 12, 5, 19];

출력 설명

arr1을 섞기 전에는 arr2보다 3개의 해당 요소가 더 많았지만 셔플된 배열에서는 4개의 요소가 모두 더 큽니다.

다음은 코드입니다:

예시

const arr1 = [3, 5, 12, 19];
const arr2 = [2, 9, 3, 12];
const maximiseArray = (arr1 = [], arr2 = []) => {
   arr1.sort((a, b) => b - a)
   const indexes = arr2.map((v, index) => index).sort((a, b) => arr2[b] - arr2[a])
   const res = []
   for(let i = 0; i < indexes.length; i++) {
      const index = indexes[i]
      res[index] = arr1[0] > arr2[index] ? arr1.shift() : arr1.pop()
   }
   return res
}
console.log(maximiseArray(arr1, arr2));

출력

[ 3, 12, 5, 19 ]