1. ホーム
  2. javascript

[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?

2022-03-16 09:59:10

質問

数値の配列があり、その配列に .push() メソッドを使用して要素を追加しています。

配列から特定の要素を削除する簡単な方法はありますか?

というようなものに相当するものを探しています。

array.remove(number);

を使用しなければならない。 コア JavaScriptを使用しています。フレームワークは不可。

解決方法は?

を検索します。 index を使用して削除したい配列要素の indexOf でそのインデックスを削除し、さらに splice .

splice() メソッドは、配列の内容を削除して変更します。 既存の要素や新しい要素を追加します。

const array = [2, 5, 9];

console.log(array);

const index = array.indexOf(5);
if (index > -1) {
  array.splice(index, 1); // 2nd parameter means remove one item only
}

// array = [2, 9]
console.log(array); 

の第2パラメータは splice は削除する要素の数です。なお splice はその場で配列を変更し、 削除された要素を含む新しい配列を返します。


念のため、以下は関数です。最初の関数は、1つだけの出現を削除します(つまり、最初のマッチである 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;
}