Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptで2つの配列のバランスをとる


問題

最初と2番目の引数として、数値の2つの配列arr1とarr2を受け取るJavaScript関数を作成する必要があります。

arr1とarr2の要素の合計は異なります。この関数は、最初の配列から1つの要素を選択し、それを2番目の配列にプッシュし、2番目の配列から1つの要素を選択して、両方の配列の要素の合計が等しくなるように最初の配列にプッシュする必要があります。これら2つの要素の配列を返す必要があります。

たとえば、関数への入力が

入力

const arr1 = [1, 2, 5];
const arr2 = [2, 4];

出力

const output = [5, 4];

出力の説明

なぜなら、arr1から5を削除してarr2にプッシュし、arr2から4を削除してarr1にプッシュすると、両方の配列の合計が等しくなるからです(7)。

コードは次のとおりです:

const arr1 = [1, 2, 5];
const arr2 = [2, 4];
const balanceArrays = (arr1 = [], arr2 = []) => {
   const sumA = arr1.reduce((acc, v) => acc + v, 0)
   const sumB = arr2.reduce((acc, v) => acc + v, 0)
   const difference = (sumA + sumB) / 2 - sumA
   const map = arr2.reduce((acc, v) => {
      acc[v] = true
      return acc
   }, {})
   for(let i = 0; i < arr1.length; i++) {
      if(map[arr1[i] + difference] === true) {
         return [arr1[i], arr1[i] + difference]
      }
   }
   return []
};
console.log(balanceArrays(arr1, arr2));

出力

[5, 4]

  1. JavaScriptで2つの配列を結合する方法は?

    以下は、JavaScriptで2つの配列を結合するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>   &

  2. JavaScriptで2つの配列を乗算する方法は?

    以下は、JavaScriptで2つの配列を乗算するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>   &