js删除数组所有元素(第一个、最后一个、按条件或值删除指定元素)

亮术网 2020-05-18 本网原创

在 Web 开发过程中,需求千变万化,就拿 js 数组来说,有时可能要删除所有元素,有时只要求删除第一个元素,有时又要求删除最后一个元素,有时只要求删除指定元素。在这四种删除中,js删除数组所有元素最为简单,一句代码搞定;删除最后一个元素用 pop() 方法也简单;删除第一个元素,稍微麻烦一些。

js 提供的函数(方法)也挺多,删除第一个和最后一个元素都有方法可用;当然,也可以不用 js 提供的方法,自己写代码删除,不过,删除第一个元素后,后面的所有元素都要向移前,代码麻烦一些。另外,按条件或值删除指定元素,需要自己写代码。

 

一、js删除数组所有元素

var arr = new Array();
  arr[0] = 1;
  arr[1] = 2;

arr[2] = 3;
  arr.length = 0;//把数组长度设置为0,即清除数组所有元素

 

或者:

arr.splice(0, arr.length);

 

 

二、js删除数组第一元素

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

 

方法一:

delete arr[0];

该方法,删除第一个元素后,数组索引不变,即数组长度不变,第一个元素变为 undefined,所以在遍历中,用此方法删除数组元素不会因数组长度发生变化而产生错误。

 

方法二:

//js删除数组第一元素
  function DelArrayElement(arr, n) {
    if (arr == null || isNaN(n) || n >= arr.length) {
      return false;
    }
    arr.splice(n, 1);
  }

调用方法:

DelArrayElement(arr, 0)
  alert(arr[0] + ";删除第一个元素后数组长度:" + arr.length);

输出结果:2;删除第一个元素后数组长度:8

 

该方法删除数组第一个元素后,后面的元素自动往前移,所以第一个元素变为2,数组长度了减了1变为8,数组索引也发生变化。

 

三、js删除数组最后一个元素

var arr = ["a", "b", "c", "d", "e", "f"];

arr.pop();
  alert(arr + ";数组长度:" + arr.length);

输出结果:

a,b,c,d,e;数组长度:5

删除数组最后一个元素后,数组长度也减1,由原来的6变为5。

 

 

四、js数组删除指定元素

1、删除满足指定条件的元素

假如要删除数组中的所有偶数,代码如下:

 

方法一:把非偶数保存到另一个数组

<script type="text/javascript">
    function RemoveSpecifiedElement() {
      var arr = [11, 2, 19, 23, 16, 6, 31, 7, 47], newArr = [];
      var j = 0;
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] % 2 != 0) {
          newArr[j] = arr[i];
          j++;
        }
      }
      return newArr;
    }

  //调用
    var arr = RemoveSpecifiedElement1();
    for (var i = 0; i < arr.length; i++) {
      document.write(arr[i], ",");
    }
  </script>

输出结果:11,19,23,31,7,47

 

方法二(效率不高):删除一个元素,i 减 1

<script type="text/javascript">
    function RemoveSpecifiedElement() {
      var arr = [11, 2, 19, 23, 16, 6, 31, 7, 47];
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] % 2 != 0) {
          arr.splice(i, 1);
          i--;
        }
      }
      return arr;
    }
  </script>

 

2、删除指定的连续几个元素

假如要删除数组中第 2 至第 4 三个元素,代码可以这样写:

var arr = [11, 12, 13, 14, 15, 16];
  arr.splice(2, 3);

删除后,数组的元素为:11,12,16。

 

 

五、js 按值删除数元素

1、数组无重复值

代码如下:

<script type="text/javascript">
    function RemoveElementByValue(val) {
      var arr = [10, 32, 8, 45, 38, 17, 31];
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] == val) {
          arr.splice(i, 1);
           break;
        }
      }
      return arr;
    }
      
    //调用(删除 45)
    var arr = RemoveElementByValue(45);
    for (var i = 0; i < arr.length; i++) {
      document.write(arr[i], ",");
    }
  </script>

删除后,数组元素为:10,32,8,38,17,31

 

2、数组有重复值(要删除的值有重复值)

代码如下:

<script type="text/javascript">
    function RemoveElementByValues(val) {
      var arr = [10, 32, 8, 45, 38, 17, 32, 95], newArr = [];
      var j = 0;
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] != val) {
          newArr[j] = arr[i];
          j++;
        }
      }
      return newArr;
    }

  //调用(删除重复值 32)
    var arr = RemoveElementByValues(32);
    for (var i = 0; i < arr.length; i++) {
      document.write(arr[i], ",");
    }
  </script>

删除后,数组元素为:10,8,45,38,17,95