arrays - javascript - Js array pop first - 如何从数组中删除一个特定的项目?

js array遍历 / javascript

我有一个数字数组,正在使用 .push() 方法向其中添加元素。

我在找相当于这样的东西。

array.remove(number);

Melanie



Answer #1

无需使用 indexOfsplice 。但是,如果只想删除一个元素,则它的性能会更好。

查找并移动(移动):

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倍。即使通过删除对splice中的 indexOf 的调用进行了改进,它的性能也比移动效果差得多。

indexof比移动慢大约10倍。即使通过删除对splice中的 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