JavaScript Array unshift

概要:このチュートリアルでは、JavaScript Array の unshift() メソッドを使用して、配列の先頭に1つまたは複数の要素を追加する方法を学びます。

JavaScript Array unshift() メソッドの紹介

Array.prototype.unshift() メソッドは、配列の先頭に1つまたは複数の要素を追加し、新しい配列の長さを返します。

以下に unshift() メソッドの構文を示します。

unshift(element);
unshift(element1, element2);
unshift(element1, element2,...elementN);Code language: CSS (css)

unshift() メソッドは既存の要素のインデックスを再設定する必要があるため、配列に多数の要素がある場合は処理が遅くなります。

配列の末尾に1つまたは複数の要素を追加するには、代わりに push() メソッドを使用できることに注意してください。

JavaScript Array unshift() メソッドの例

unshift() メソッドの使用例をいくつか見てみましょう。

1) JavaScript Array unshift() メソッドを使用して配列の先頭に要素を追加する

次の例では、unshift() メソッドを使用して、数値 10numbers 配列に追加します。

let numbers = [30, 40];

const length = numbers.unshift(20);

console.log({ length });
console.log({ numbers });
Code language: JavaScript (javascript)

出力

{ length: 3 }
{ numbers: [ 20, 30, 40 ] }Code language: CSS (css)

仕組み

まず、2つの要素を持つ配列を定義します。

let numbers = [20, 30];Code language: JavaScript (javascript)

numbers 配列の長さは2です。

次に、数値 10numbers 配列の先頭に追加し、新しい配列の長さを length 変数に代入します。

const length = numbers.unshift(10);Code language: JavaScript (javascript)

3番目に、length 変数と numbers 変数をコンソールに出力します。

console.log({ length });
console.log({ numbers });
Code language: JavaScript (javascript)

次の図は、unshift() 関数がどのように動作するかを示しています。

2) JavaScript Array unshift() メソッドを使用して配列の先頭に複数の要素を追加する

次の例では、unshift() メソッドを使用して、配列の先頭に2つの要素を追加します。

let numbers = [30, 40];

const length = numbers.unshift(10, 20);

console.log({ length });
console.log({ numbers });
Code language: JavaScript (javascript)

出力

{ length: 4 }
{ numbers: [ 10, 20, 30, 40 ] }Code language: CSS (css)

3) JavaScript Array unshift() を使用して、ある配列の要素を別の配列に追加する

次の例では、unshift() メソッドを使用して、ある配列の要素を別の配列の先頭に追加します。


let days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'];
let weekends = ['Sat', 'Sun'];

for (const weekend of weekends) {
  days.unshift(weekend);
}

console.log(days);Code language: JavaScript (javascript)

出力

['Sun', 'Sat', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri']Code language: JSON / JSON with Comments (json)

ES6以降では、スプレッド演算子を使用してコードをより簡潔にすることができます。例えば、次のようになります。

let days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'];
let weekends = ['Sat', 'Sun'];

days.unshift(...weekends);

console.log(days);
Code language: JavaScript (javascript)

JavaScript Array unshift() メソッドを配列のようなオブジェクトで使用する

unshift() メソッドはジェネリックです。したがって、配列のようなオブジェクトでもうまく機能します。配列のようなオブジェクトから unshift() メソッドを呼び出すには、call() または apply() メソッドを使用して配列オブジェクトから借りてきます。

次の例を見てください。

let greetings = {
  0: 'Hi',
  1: 'Hello',
  2: 'Howdy',
  length: 3,
  prepend(message) {
    [].unshift.call(this, message);
    return this.length;
  },
};

greetings.prepend('Good day');

console.log(greetings);
Code language: JavaScript (javascript)

出力

{
  '0': 'Good day',
  '1': 'Hi',
  '2': 'Hello',
  '3': 'Howdy',
  length: 4,
  prepend: [Function: prepend]
}Code language: JavaScript (javascript)

仕組み

まず、次のプロパティを持つ greetings オブジェクトを定義します。

  • 01、および 3 という名前のプロパティは、greetings オブジェクトの要素を表します。
  • length プロパティは3の値で初期化され、これは greetings オブジェクトが持つ要素の数を示します。
  • prepend() メソッドは、unshift() メソッドの call() メソッドを呼び出し、thisgreetings オブジェクトに設定します。言い換えれば、greetings オブジェクトは配列オブジェクト ([]) から unshift() メソッドを借ります。

次に、greetings オブジェクトの prepend() メソッドを呼び出して、インデックス 0th に要素を追加します。

3番目に、greetings オブジェクトをコンソールに出力します。

prepend() メソッドで greetings オブジェクトに1つまたは複数の要素を追加できるようにするには、レストパラメータスプレッド演算子を次のように使用できます。

let greetings = {
  0: 'Hi',
  1: 'Hello',
  2: 'Howdy',
  length: 3,
  prepend(...messages) {
    [].unshift.call(this, ...messages);
    return this.length;
  },
};

greetings.prepend('Good day', 'Bye');Code language: JavaScript (javascript)

この例では、prepend() メソッドは1つ以上のメッセージ (...messages) を受け取り、スプレッド演算子を使用して unshift() メソッドに個別に渡します。

まとめ

  • JavaScript 配列の unshift() メソッドを使用して、配列の先頭に1つまたは複数の要素を追加します。
  • unshift() メソッドは、call() または apply() メソッドを使用することで、配列のようなオブジェクトでも動作します。
このチュートリアルは役に立ちましたか?