arrays - JavaScript Array slice - 配列から特定の項目を削除するには?

JavaScript 配列 追加 / javascript

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

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

array.remove(number);

Melanie



Answer #1

indexOf または splice を使用する必要はありません。ただし、要素の1つのオカレンスのみを削除する場合は、パフォーマンスが向上します。

検索して移動(移動):

function move(arr, val) {
  var j = 0;
  for (var i = 0, l = arr.length; i < l; i++) {
    if (arr[i] !== val) {
      arr[j++] = arr[i];
    }
  }
  arr.length = j;
}
function indexof(arr, val) {
  var i;
  while ((i = arr.indexOf(val)) != -1) {
    arr.splice(i, 1);
  }
}
function splice(arr, val) {
  for (var i = arr.length; i--;) {
    if (arr[i] === val) {
      arr.splice(i, 1);
    }
  }
}

indexofは移動よりも約10倍遅いです。スプライスの indexOf の呼び出しを削除することで改善されたとしても、移動よりもパフォーマンスが大幅に低下します。

indexofは移動よりも約10倍遅いです。スプライスの indexOf の呼び出しを削除することで改善されたとしても、移動よりもパフォーマンスが大幅に低下します。

Remove all occurrences:
    move 0.0048 ms
    indexof 0.0463 ms
    splice 0.0359 ms

Remove first occurrence:
    move_one 0.0041 ms
    indexof_one 0.0021 ms