TypeScript配列要素削除方法
TypeScriptで配列要素を削除する方法
TypeScriptでは、配列から要素を削除する方法はいくつかあります。以下に主な方法を説明します。
splice()メソッドを使用する
- 構文
array.splice(start, deleteCount, ...items)
start
: 削除を開始するインデックス。deleteCount
: 削除する要素の数。items
: 削除された要素の代わりに挿入する要素(任意)。
- 説明
既存の配列から要素を削除し、削除された要素を含む新しい配列を返します。
const fruits = ["apple", "banana", "orange"];
// インデックス1の要素("banana")を削除
fruits.splice(1, 1);
console.log(fruits); // ["apple", "orange"]
- 構文
array.filter(callback)
callback
: 各要素に対して呼び出される関数。条件を満たす場合はtrue
を返します。
- 説明
配列の要素をフィルタリングし、条件を満たす要素を含む新しい配列を返します。
const numbers = [1, 2, 3, 4, 5];
// 偶数を削除
const evenNumbersRemoved = numbers.filter(num => num % 2 !== 0);
console.log(evenNumbersRemoved); // [1, 3, 5]
- 構文
array.slice(start, end)
end
: 抽出を終了するインデックス(非包含)。
- 説明
slice()
メソッドを使用して特定の範囲の要素を抽出し、新しい配列を作成します。その後、元の配列に新しい配列を代入して削除を実現します。
const animals = ["cat", "dog", "bird", "fish"];
// インデックス1の要素("dog")を削除
animals = animals.slice(0, 1).concat(animals.slice(2));
console.log(animals); // ["cat", "bird", "fish"]
注意
slice()
は元の配列を変更しません。splice()
とfilter()
は元の配列を変更します。
const fruits = ["apple", "banana", "orange"];
// インデックス1の要素("banana")を削除
fruits.splice(1, 1);
console.log(fruits); // ["apple", "orange"]
- 解説
fruits
という配列に「apple」、「banana」、「orange」が格納されています。splice(1, 1)
で、インデックス1(2番目の要素)から1つの要素を削除します。- 結果として、
fruits
配列には「apple」と「orange」が残ります。
const numbers = [1, 2, 3, 4, 5];
// 偶数を削除
const evenNumbersRemoved = numbers.filter(num => num % 2 !== 0);
console.log(evenNumbersRemoved); // [1, 3, 5]
- 解説
numbers
という配列に1から5までの数値が格納されています。filter()
メソッドを使用して、各要素に対して条件を満たすものを抽出します。num => num % 2 !== 0
は、偶数でない(奇数)要素を抽出する条件です。- 結果として、
evenNumbersRemoved
配列には奇数のみが残ります。
const animals = ["cat", "dog", "bird", "fish"];
// インデックス1の要素("dog")を削除
animals = animals.slice(0, 1).concat(animals.slice(2));
console.log(animals); // ["cat", "bird", "fish"]
- 解説
animals
という配列に「cat」、「dog」、「bird」、「fish」が格納されています。slice(0, 1)
で、インデックス0(最初の要素)からインデックス1(2番目の要素)までの要素を抽出します。slice(2)
で、インデックス2(3番目の要素)以降の要素を抽出します。- 抽出した2つの部分配列を
concat()
で結合し、新しい配列を作成します。 - 結果として、
animals
配列には「cat」、「bird」、「fish」が残ります。
delete演算子を使用する
- 注意
この方法は配列の要素を削除するのではなく、その要素をundefined
に置き換えるだけです。 - 説明
配列の特定のインデックスの要素を削除し、その要素をundefined
に設定します。
const colors = ["red", "green", "blue"];
delete colors[1];
console.log(colors); // ["red", undefined, "blue"]
- 説明
配列の要素を逐次処理し、新しい配列を作成します。条件を満たさない要素をスキップすることで、削除を実現します。
const fruits = ["apple", "banana", "orange"];
const filteredFruits = fruits.reduce((acc, fruit) => {
if (fruit !== "banana") {
acc.push(fruit);
}
return acc;
}, []);
console.log(filteredFruits); // ["apple", "orange"]
forEach()メソッドを使用する
- 説明
配列の要素を逐次処理し、条件を満たす要素を削除します。ただし、配列の要素を削除しながらループすることは推奨されません。
const numbers = [1, 2, 3, 4, 5];
numbers.forEach((num, index) => {
if (num % 2 === 0) {
numbers.splice(index, 1);
}
});
console.log(numbers); // [1, 3, 5]
forEach()
で配列の要素を削除しながらループすることは、パフォーマンスの問題や予期しない結果を引き起こす可能性があります。reduce()
とforEach()
は元の配列を変更します。delete
演算子は配列の要素を完全に削除するわけではないため、配列の構造が変更される可能性があります。
arrays typescript collections