Computer >> Máy Tính >  >> Lập trình >> Javascript

Tối đa hóa mảng đầu tiên so với mảng thứ hai trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript có hai mảng số, arr1 và arr2, có cùng độ dài.

Hàm của chúng ta nên xáo trộn các phần tử của mảng đầu tiên, arr1, sao cho số phần tử tối đa của nó lớn hơn các phần tử tương ứng của mảng arr2. Sau đó, hàm sẽ trả về mảng đã xáo trộn.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

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

Đầu ra

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

Giải thích đầu ra

Trước khi xáo trộn arr1, nó có 3 phần tử tương ứng lớn hơn arr2, nhưng trong mảng xáo trộn, cả 4 phần tử đều lớn hơn.

Sau đây là mã:

Ví dụ

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));

Đầu ra

[ 3, 12, 5, 19 ]