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

【JavaScript】同じ配列内で偶数を複製する方法を解説

本記事では、JavaScriptを使って、配列内の偶数を同じ配列の中で複製(繰り返し)する関数の作成方法を解説します。

例えば、次のような配列が与えられた場合を見てみましょう。

const arr = [1, 2, 5, 6, 8];

この場合、期待される出力は以下のとおりです。

const output = [1, 2, 2, 5, 6, 6, 8, 8];

ご覧のとおり、偶数である「2」「6」「8」がそれぞれ元の位置に残ったまま、直後に複製されています。奇数はそのまま変化していません。

実装コード

以下が実際のコードです。

const arr = [1, 2, 5, 6, 8];
const repeatEvenNumbers = arr => {
    let end = arr.length - 1;
    for (let i = end; i > 0; i--) {
        if (arr[i] % 2 === 0) {
            arr.splice(i, 0, arr[i]);
        }
    }
    return arr;
};
console.log(repeatEvenNumbers(arr));

コードのポイント

この実装で重要なのは、次の3点です。

  • 配列を末尾から先頭に向かって逆順に走査しているため、途中で要素を挿入しても、まだ処理していない要素のインデックスがずれません。
  • splice(i, 0, arr[i]) の第2引数「0」は削除する要素数を意味し、インデックス i の位置に既存の値を挿入する動作になります。
  • 剰余演算子 % を使った arr[i] % 2 === 0 により、その要素が偶数かどうかを判定しています。

出力結果

コンソールには次のように表示されます。

[
    1, 2, 2, 5,
    6, 6, 8, 8
]

このように、新しい配列を作成せずに、元の配列自体を直接書き換える形で偶数を複製できます。配列の操作順序や splice() の挙動を理解すれば、応用して奇数の複製や条件付き挿入などにも簡単に拡張できるでしょう。

  1. JavaScriptで配列内の最大値を求める方法を解説

    JavaScriptで配列に含まれる数値の中から最大値を取得したい場合、reduce()メソッドを使うのがシンプルで確実な方法の一つです。reduce()は配列の各要素を順番に処理しながら、比較結果を累積していくため、最大値の判定にも最適です。reduce()メソッドを使った最大値の取得方法以下のコードでは、配列内の要素を2つずつ比較し、大きい方の値を次の処理へ引き継ぐことで、最終的に配列全体の最大値を返しています。この例では、最大値である「530」が出力されます。サンプルコード<!DOCTYPE html> <html>    <body&g

  2. JavaScriptで配列の要素を同じ配列内に複製する方法

    JavaScriptでは、concat()メソッドとsort()メソッドを組み合わせることで、既存の配列の要素を同じ配列内に複製することができます。ここでは、実際に動作するサンプルコードを使って、その手順をわかりやすく解説します。 コード例 以下は、配列の要素を同じ配列内に複製するためのコード例です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" cont