数组元素删除

295 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天.

数组尾 删除 pop

数组头 删除 shift

任意位置 删除 splice:

在数组中间插入元素:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,0,"Lemon","Kiwi"); //Banana,Orange,Lemon,Kiwi,Apple,Mango

删除数组里 的某一个元素:

fruits.splice(index,1);//返回删除元素的数组

遍历数组 删元素:

能用filter 就不用splice

    const list  = [
        { name: 'left', width: 20, height:30 },,
        { name: 'right', width: 10, height:30 },
        { name: 'center', width: 70, height:30 },
        { name: 'right', width: 10, height:30 },
        { name: 'left', width: 20, height:30 },
        { name: 'right', width: 10, height:30 },
        { name: 'below', width: 10, height:30 },
        { hh: 'below', haha: 10, dd:30 },
    ];
    let flist = list.filter(item => item && item.width && item.width>= 20);
    //{name: 'left', width: 20, height: 30}
    //{name: 'center', width: 70, height: 30}
    //{name: 'left', width: 20, height: 30}

long long ago,没有 filter的时候 还是用 splice 去删除 数组的元素:

第一种:从头开始遍历数组,每次删除元素后,下标index 需要减1。

    for(let i = 0; i < list.length ;i++){
        if(!list[i] || !list[i].width){
            list.splice(i,1);
            i--; 
        }else{
            if(10 >= list[i].width){
                list.splice(i,1);
                i--
            }
        }
    }

或 第二种:从尾开始遍历数组

    for(let i = list.length-1;i>-1;i--){
        if(!list[i] || !list[i].width){
            list.splice(i,1);
        }else{
            if(10 >= list[i].width){
                list.splice(i,1);
            }
        }
    }