JavaScriptでは、配列の要素を削除して空にする方法がいくつかあります。それぞれの方法には特徴があり、目的に応じて使い分けることで、効率的に配列を操作できます。
この記事では『配列の要素を空にする方法』について、以下の内容をサンプルコードを用いてわかりやすく解説します。
length
プロパティで配列を空にするsplice()
メソッドで配列を空にする- 空の配列を代入して配列を空にする
pop()
メソッドで配列を空にするshift()
メソッドで配列を空にする- 配列が空かどうかを判定する方法
lengthプロパティで配列を空にする
配列のlength
プロパティに0
を代入すると、その配列のすべての要素が削除され、配列が空になります。サンプルコードを以下に示します。
let array = [1, 2, 3, 4];
console.log(array); // [1, 2, 3, 4]
array.length = 0;
console.log(array); // []
この方法はシンプルなので一番よく使います。
splice()メソッドで配列を空にする
splice()
メソッドの引数に0
を指定すると、その配列のすべての要素が削除され、配列が空になります。サンプルコードを以下に示します。
let array = [1, 2, 3, 4];
console.log(array); // [1, 2, 3, 4]
array.splice(0);
console.log(array); // []
空の配列を代入して配列を空にする
空の配列を代入することで、既存の配列が空になります。サンプルコードを以下に示します。
let array = [1, 2, 3, 4];
console.log(array); // [1, 2, 3, 4]
array = [];
console.log(array); // []
しかし、空の配列を代入すると、代入されたarray
は新しい配列インスタンス(今回の場合は空の配列)を参照するようになります。そのため、もしarray
を他の変数に代入していた場合、その変数は古いインスタンスを参照し続けます。ゆえに、array
は空でも、他の変数は元の配列の値を保持したままになります。この動作がわかるサンプルコードを示します。
let array = [1, 2, 3, 4];
let anotherArray = array;
// `array`に新しい空の配列を代入
array = [];
console.log(array); // []
console.log(anotherArray); // [1, 2, 3, 4]
このように、array
に空の配列を代入すると、anotherArray
は古いインスタンスを参照し続けるため、array
とは異なる内容となります。この動作により、不具合の原因になることもあります。
一方、length
プロパティやsplice()
メソッドを用いた場合、元の配列の参照が保持され続けるので、array
とanotherArray
の両方を空にすることができます。サンプルコードを以下に示します。
let array = [1, 2, 3, 4];
let anotherArray = array;
// `length` プロパティで配列を空にする
array.length = 0;
console.log(array); // []
console.log(anotherArray); // []
pop()メソッドで配列を空にする
pop()
メソッドは配列の末尾から1つずつ要素を取り出します。ループと合わせることで、配列が空にすることができます。サンプルコードを以下に示します。
let array = [1, 2, 3, 4];
console.log(array); // [1, 2, 3, 4]
while (array.length > 0) {
const item = array.pop();
console.log(item); // 何か処理をする
}
console.log(array); // []
この方法は配列から要素を削除すると同時に何か処理をする必要がある場合に便利です。pop()
メソッドは後ろから取り出すので、4
, 3
, 2
, 1
の順に処理されます。先頭から1
, 2
, 3
, 4
と取り出したい場合にはshift()
メソッドを使います。
shift()メソッドで配列を空にする
shift()
メソッドは配列の先頭から要素を取り出します。こちらもpop()
メソッドと同様に、ループと合わせることで、配列が空にすることができます。サンプルコードを以下に示します。
let array = [1, 2, 3, 4];
console.log(array); // [1, 2, 3, 4]
while (array.length > 0) {
const item = array.shift();
console.log(item); // 何か処理をする
}
console.log(array); // []
配列が空かどうかを判定する方法
配列が空かどうかを確認するには、length
プロパティを使うのが簡単です。サンプルコードを以下に示します。
let array = [];
if (array.length === 0) {
console.log('配列は空です');
} else {
console.log('配列には要素があります');
}
また、0
はfalse
として評価されるため、次のように書くこともできます。
let array = [];
if (!array.length) {
console.log('配列は空です');
} else {
console.log('配列には要素があります');
}
このコードでは、array.length
が0
であればfalse
とみなされ、!
を使ってそれをtrue
に変換しているため、空の配列であることが確認できます。
本記事のまとめ
この記事では『配列の要素を空にする方法』について、以下の内容を説明しました。
length
プロパティで配列を空にする- 配列の
length
プロパティに0
を代入すると、すべての要素が削除される。
- 配列の
splice()
メソッドで配列を空にするsplice()
メソッドに0
を指定すると、配列のすべての要素を削除する。
- 空の配列を代入して配列を空にする
- 空の配列を代入することで配列を初期化できるが、元の参照が切れるため他の変数に影響を与えない。
pop()
メソッドで配列を空にする- 末尾から1つずつ要素を取り出し、配列を空にする。
shift()
メソッドで配列を空にする- 先頭から1つずつ要素を取り出し、配列を空にする。
- 配列が空かどうかを判定する
length
プロパティを使って、配列が空かどうかを簡単に確認できる。
お読み頂きありがとうございました。