配列から特定の値を削除するにはどうすればよいですか? たとえば次のようになります:
array.remove(value);
制約:コアJavaScriptを使用する必要があります。フレームワークは許可されません。
ベストアンサー1
index
削除したい配列要素の を以下を使用して見つけます。indexOf
、そしてそのインデックスを削除しますsplice
。
splice() メソッドは、既存の要素を削除したり、新しい要素を追加したりして、配列の内容を変更します。
const array = [2, 5, 9];
console.log(array);
const index = array.indexOf(5);
if (index > -1) { // only splice array when item is found
array.splice(index, 1); // 2nd parameter means remove one item only
}
// array = [2, 9]
console.log(array);
の 2 番目のパラメータは、splice
削除する要素の数です。 はsplice
配列をその場で変更し、削除された要素を含む新しい配列を返すことに注意してください。
完全性のために、ここに関数があります。最初の関数は単一の出現のみを削除します(つまり、5
からの最初の一致を削除します[2,5,9,1,5,8,5]
)。一方、2 番目の関数はすべての出現を削除します。
function removeItemOnce(arr, value) {
var index = arr.indexOf(value);
if (index > -1) {
arr.splice(index, 1);
}
return arr;
}
function removeItemAll(arr, value) {
var i = 0;
while (i < arr.length) {
if (arr[i] === value) {
arr.splice(i, 1);
} else {
++i;
}
}
return arr;
}
// Usage
console.log(removeItemOnce([2,5,9,1,5,8,5], 5))
console.log(removeItemAll([2,5,9,1,5,8,5], 5))
TypeScript では、型パラメータを使用してこれらの関数を型安全に維持できます。
function removeItem<T>(arr: Array<T>, value: T): Array<T> {
const index = arr.indexOf(value);
if (index > -1) {
arr.splice(index, 1);
}
return arr;
}