arrays - javascript - filter js - Как удалить конкретный элемент из массива?

двумерный массив js / javascript

У меня есть массив чисел, и я использую метод .push() для добавления к нему элементов.

Я ищу эквивалент чего-то подобного:

array.remove(number);

Melanie



Answer #1

Нет необходимости использовать indexOf или splice . Однако он работает лучше, если вы хотите удалить только одно вхождение элемента.

Найдите и переместите (переместите):

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 раз медленнее, чем move. Даже если его улучшить путем удаления вызова indexOf в splice, он работает намного хуже, чем move.

indexof примерно в 10 раз медленнее, чем move. Даже если его улучшить путем удаления вызова indexOf в splice, он работает намного хуже, чем move.

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