2つ抽出して追加(JavaScript)


問題の説明


整数配列番号.numbersから異なるインデックスの2つの数を抽出し、作成できるすべての数を昇順に配列に入れ、solution関数の戻りを完了してください.

せいげんじょうけん


numbersの長さは2または100以下です.
numbersのすべての数字は0または100以下です.

I/O例


numbersresult[2,1,3,4,1][2,3,4,5,6,7][5,0,2,7][2,5,7,9,12]

問題を解く

function solution(numbers) {
  let answer = 0
  let x = []
  for (let i = 0; i < numbers.length; i++) {
    for (let j = i+1; j < numbers.length; j++) {
      x.push(numbers[i]+numbers[j])
    }
  }
  x = x.sort((a,b) => a-b)
  x = solution1(x)
  return x;
}
function solution1(arr) {
  let arr1 = [arr[0]]
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] !== arr[i-1]) {
      arr1.push(arr[i])
    }
  }
  return arr1;
}

  • 2階建てforゲートで配列から2つ抽出し、できる数を加えてすべて空配列xに入れます.
  • sort((a,b) => a-b)を使用して昇順に並べ替えます.

  • 前の問題で「同じ数字が好きではない」で作成した配列で、連続して現れる値を削除するために関数が呼び出されました.
  • 別の解釈

    function solution(numbers) {
      let answer = 0
      let x = []
      for (let i = 0; i < numbers.length; i++) {
        for (let j = i+1; j < numbers.length; j++) {
          x.push(numbers[i]+numbers[j])
        }
      }
      x = x.sort((a,b) => a-b)
      x = [...new Set(x)]
      return x;
    }
    最初はおもしろいためにやったのです.[...new Set(x)]を使用して重複除外を行うと、より容易になります.