※使用方法
let arr = new Array("a", "b", "c", "d", "e"); console.info(arr); // a b c d e // pop 刪除最後一個元素,返回值為被刪除的元素 // let pop = arr.pop(); // console.info(arr); // a b c d // console.info(pop); // e // shift 刪除第一個元素,返回值為被刪除的元素 // let shift = arr.shift(); // console.info(arr); // b c d e // console.info(shift); // a // splice 最靈活的刪除,也可適情況新增 // 第一個參數,表示從指定的索引開始刪到最後,必要 // 第二個參數,表示從第一個參數之後的索引開始刪除幾個元素,非必要 // 第三個參數是「...」,刪除的索引可從第三個參數之後加入這裡輸入的元素,非必要 let splice = arr.splice(2, 3, "f", "g"); console.info(arr); // a b f g console.info(splice); // c d e
※
※splice 刪除常見錯誤
let arr = new Array("a", "b", "c", "d", "e"); console.info(arr); // a b c d e // for(let i=0; i<arr.length; i++) { // if(arr[i] == "a" || arr[i] == "b") { // arr.splice(i, 1); // // i--; // } // } arr.forEach((value, i) => { if(value == "a" || value == "b") { arr.splice(i, 1); // i--; 無效 } }); // 以下是用 jQuery 的 each,也是一樣的情形 // $(arr).each((i, value) => { // if(value == "a" || value == "b") { // arr.splice(i, 1); // i--; 無效 // } // }); // $.each(arr, (i, value) => {
// if(value == "a" || value == "b") { // arr.splice(i, 1); // i--; 無效 // } // });
console.info(arr); // b c d e,非預期的 c d e
※以上都是 index 刪除後會自動往上一格,所以可用 i-- 來解決,但 forEach 是無效的