说明: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);

 


 

完。

相关文章:

  • 2021-12-19
  • 2021-06-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-20
  • 2021-12-05
  • 2021-05-19
猜你喜欢
  • 2022-01-17
  • 2021-12-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-07
  • 2022-12-23
相关资源
相似解决方案