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

JavaScriptで配列の特定の位置に要素を挿入する方法

配列内の指定した位置に要素を追加したい場面はよくあります。しかし、JavaScriptにはそのための機能が標準では用意されていません。そこで、独自の関数を作成する必要があります。この関数をArray.prototypeに追加すれば、すべての配列オブジェクトから直接呼び出せるようになります。

insertメソッドを自作する

Array.prototype.insert = function(data, position) {
    if (position >= this.length) {
        this.push(data); // 配列の長さ以上なら末尾に追加
    } else if (position <= 0) {
        this.unshift(data); // 0以下なら先頭に追加
    } else { // 指定位置以降の要素をひとつずつ右へずらす
        for (let i = this.length; i >= position; i--) {
            this[i] = this[i - 1];
        }
        this[position] = data;
    }
}

let arr = [1, 2, 3, 4];
arr.insert(-1, 2);
console.log(arr);

実行結果

上記のコードを実行すると、次のような出力が得られます。

[1, 2, -1, 3, 4]

このように定義しておけば、作成したすべての配列オブジェクトでinsertメソッドが使えるようになります。

spliceメソッドを使う方法

要素の挿入には、標準で用意されているspliceメソッドを利用することもできます。プロトタイプを拡張せずに済むため、多くの場合はこちらの方法が推奨されます。

var months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
console.log(months);

実行結果

このコードを実行すると、次の出力が得られます。

['Jan', 'Feb', 'March', 'April', 'June']

spliceメソッドの引数について

第1引数は、要素を削除または挿入する開始位置(インデックス)です。第2引数は削除する要素の数で、0を指定すれば既存の要素は一切削除されません。そして第3引数以降には、その位置に挿入したい値を順番に指定します。

  1. JavaScriptで配列の中に含まれる配列のインデックス位置を見つける方法

    たとえば、次のような「配列の配列」(ネストされた配列)があるとします。const arr = [     [1,0],     [0,1],     [0,0] ];ここで求められているのは、このような配列を第1引数として受け取り、ちょうど2つの数値からなる配列を第2引数として受け取るJavaScript関数を作成することです。作成する関数は、第2引数として渡された配列が元の配列の配列の中に存在するかどうかを判定し、存在すればそのインデックス位置を返す必要があります。アプロー

  2. 【JavaScript入門】配列内で最初の非連続な数値を見つける方法

    はじめに本記事では、JavaScriptを使って「数値の配列の中から、直前の要素と連続していない最初の数値」を見つける方法を解説します。アルゴリズムの練習やコーディング面接の対策としても役立つ基本的な問題です。 問題の定義数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、直前の要素に対して +1 となっていない(連続していない)最初の要素を返さなければなりません。 言い換えると、隣り合う要素同士の差が1以外になる箇所が現れたとき、その箇所の後ろ側の要素を返すという処理です。なお、そのような要素が必ず配列内に1つ以上存在するものとします。 サンプルコード以下は、実