在 JavaScript 中最大化第一个数组而不是第二个

问题

我们需要编写一个 JavaScript 函数,该函数接受两个相同长度的数字数组 arr1 和 arr2。

我们的函数应该打乱第一个数组 arr1 的元素,使其最大元素数大于数组 arr2 的对应元素。然后该函数应返回混洗后的数组。

例如,如果函数的输入是

输入

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

const arr2 = [2, 9, 3, 12];

输出

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

输出说明

在shuffle arr1之前,它有3个对应元素比arr2大,但在shuffled数组中,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 ]

以上是 在 JavaScript 中最大化第一个数组而不是第二个 的全部内容, 来源链接: utcz.com/z/358702.html

回到顶部