JavaScriptで配列内に合計値が存在する数値ペアを見つける方法
今回は、数値の配列を受け取るJavaScript関数を作成します。この関数は、異なるインデックス(連続しているかどうかは問わない)にある2つの数値を選び、その合計値も同じ配列内に存在するようなペアを見つけて返す必要があります。
例えば、[1, 3, 5, 6, 8, 9] という配列の場合、「5」と「1」のペアは合計が「6」になり、この6は配列内に存在するため、有効なペアとして返されます。
サンプルコード
以下が実際のコードです。
const arr = [1, 3, 5, 6, 8, 9];
const findPair = (arr = []) => {
let count = 0;
for(let i = 0; i < arr.length; i++){
for(let j = 0; j < arr.length; j++){
if(i === j){
break;
};
let sum = arr[i] + arr[j];
if(arr.includes(sum)){
return [arr[i], arr[j]];
};
};
};
return [];
};
console.log(findPair(arr));実行結果
コンソールには以下のように出力されます。
[5, 1]
コードの解説
- 外側と内側の二重ループにより、配列内の異なるインデックス同士のすべての組み合わせを順番に調べます。
i === jの場合は同じ要素同士の組み合わせになるため、ループを抜けてスキップします。- 2つの要素の合計を計算し、
Array.prototype.includes()メソッドを使って、その合計値が元の配列内に存在するかどうかを確認します。 - 条件を満たすペアが見つかった時点で、そのペアを配列として即座に返します。
- 最後まで条件を満たすペアが存在しなかった場合は、空の配列
[]を返します。
このように、シンプルな二重ループと includes() を組み合わせるだけで、合計値が配列内に存在するペアを効率的に検索できます。ただし、この方法の計算量は O(n²×m) となるため、大きな配列を扱う場合は、あらかじめ配列を Set に変換して存在チェックを高速化するとよいでしょう。
-
JavaScriptで配列内の正の数の個数と負の数の合計を返す方法
問題正の数と負の数が混在する整数の配列を受け取り、1つ目の要素に正の数の個数、2つ目の要素に負の数の合計を格納した新しい配列を返すJavaScript関数を作成する必要があります。例えば、入力配列が [1, 2, 1, -2, -4, 2, -6, 2, -4, 9] の場合、正の数は6個、負の数の合計は -16 となるため、出力は [6, -16] になります。実装例以下がそのコードです。const arr = [1, 2, 1, -2, -4, 2, -6, 2, -4, 9]; const posNeg = (arr = []) => { const cr
-
JavaScriptでペアの最小値合計を最大化するアルゴリズムを解説
この記事では、整数の配列を受け取り、ペアごとの最小値の合計が最大になるようにグループ分けするJavaScript関数の実装方法を解説します。 問題の概要 長さ2nの整数配列 arr を引数として受け取るJavaScript関数を作成します。この関数の目的は、配列内の整数をn個のペア (a1, b1), (a2, b2), ..., (an, bn) にグループ化し、各ペアの最小値 min(ai, bi) の合計(i = 1 から n まで)ができるだけ大きくなるようにすることです。 例えば、次の入力が与えられたとします。 const arr = [1, 4, 3, 2]; この場合、期待される