zoukankan      html  css  js  c++  java
  • JS删除数组元素并更新length

    说明:JS 删除数组元素的方法有两种,delete arr[i] 或 arr.splide(i, 1)

    一、区别

    delete 句柄只是清空元素内存,数组索引及长度都保留,例如:

    let arr = [0, 1, 2, 3, 4, 5];
    delete arr[1];
    console.log( arr[1] ); // undefined
    console.log( arr.length ); // 6

    splice 方法会删除元素,并更新数组索引及长度,例如:

    let arr = [0, 1, 2, 3, 4, 5];
    arr.splice(1, 1);
    console.log( arr[1] ); // 2
    console.log( arr.length ); // 5

    二、循环删除多个元素的方法

    根据上述,我们知道要删除数组元素,应该要用 splice 方法,但 splice 会更新数组索引,在删除多个元素的时候,有点麻烦,例如:

    // 删除 2 和 4 元素
    let arr = [0, 1, 2, 3, 4, 5];
    arr.splice(2, 1);
    // 由于数组索引已更新,所以删除4不能用 arr.splice(4, 1)了,要用 arr.splce(3,1)
    arr.splice(3, 1);
    console.log( arr );

    循环删除操作:

    let offset = 0; // 索引偏移值
    let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    
    for (let i=0, len=arr.length; i<len; i++) {
        let key = i - offset;
        if (arr[key ] % 2 == 0) {
              arr.splice(key , 1);
              offset++;              
        }
    }
    
    console.log(arr);

    完。

  • 相关阅读:
    Excel 之查找与替换
    重拾Excel之为什么
    taobao
    祝我生日快乐
    啊哈哈哈哈!自由啦
    我是不是得了抑郁症?
    Be quiet
    tcpdump tutorial
    Java Thread 多线程同步、锁、通信
    java 堆、栈、常量池等
  • 原文地址:https://www.cnblogs.com/tujia/p/14205470.html
Copyright © 2011-2022 走看看