1. 程式人生 > 實用技巧 >JS刪除陣列元素並更新length

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);


完。