JavaScript で配列から特定の項目を削除するにはどうすればいいですか? 質問する

JavaScript で配列から特定の項目を削除するにはどうすればいいですか? 質問する

配列から特定の値を削除するにはどうすればよいですか? たとえば次のようになります:

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;
}

おすすめ記事