js数组遍历删除指定元素,因为使用下标删除不准确,所以用以下方法解决

普通删除方法:删除不彻底

方法一:使用添加元素的方法.push()

  var arr = [3, 0, 11, 0, 3, 0, 66];
    var newArry = [];
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] != 0) {
        newArry.push(arr[i]);
 
      }
    }
    console.log(newArry);

方法二:使用.splice()

var arr = [3, 0, 11, 0, 3, 0, 66];
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] == 0) {
        arr.splice(i, 1);
      }
    }
    console.log(arr);

具体情况:如果去除指定元素在数组中连续出现几个,不进行处理会存在删漏掉的情况

原因:在循环遍历的时候,i是元素的下标值,删除数组中某个元素的时候,循环i的值不变,但是里面的元素少了,相对应的元素就会向前靠,这样就会漏掉相邻的需要删除的元素;用方法三和方法四,就会避免出现这个问题,强力推荐方法四。

根本解决的方法如下:

方法三:使用.splice(),使用倒序遍历;

var arr = [3, 7, 11, 0, 0, 0, 3, 0, 55];
    for (var i = arr.length-1; i >= 0; i--) {
      if (arr[i] == 0) {
        arr.splice(i, 1);
      }
    }
    console.log(arr);

方法四强烈推荐

 var arr = [3, 7, 11, 0, 0, 0, 3, 0, 55]
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] == 0) {
        arr.splice(i, 1);
        i--;
      }
    }
    console.log(arr);

 

posted @ 2022-09-27 11:06  Evident  阅读(945)  评论(0编辑  收藏  举报