※使用方法
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 是無效的
沒有留言:
張貼留言