清空数组的操作

splice清空

let arr = [1, 2, 3, 4];
        console.log("test:", arr)
        arr.splice(0, arr.length);
        console.log("test:", arr)

结果:

js数组数据的删除操作_数组长度

赋空值

console.log("--------------赋空值-----------------------")
        let arr1 = [1, 2, 3, 4];
        arr1 = []
        console.log("test:", arr)

结果:

js数组数据的删除操作_数组元素_02

删除数组元素

splice方式

console.log("--------------splice-----------------------")
        var ary = [1, 2, 3, 4];
        console.log("删除数组元素-1-before:", ary)
        ary.splice(0, 1);
        console.log("删除数组元素-1-after:", ary)
        console.log("删除数组元素-1-after:", ary[0])

结果:

js数组数据的删除操作_干货_03

注意:直接会改变数组的内容,数组的index索引对应的值也会变化,长度也同时变化,索引为0的值变成了原来索引为1的值

delete方式

console.log("--------------delete-----------------------")
        let arr2 = [1, 2, 3, 4];
        console.log("删除数组元素-2-before:", arr2)
        delete arr2[1]
        console.log("删除数组元素-2-after:", arr2)
        console.log("删除数组元素-2-after:", arr2[1])

结果:

js数组数据的删除操作_数组长度_04

注意:delete数组元素,不会改变数组长度,被删除索引对应的值变成了undefined,其他索引对应的值都没有变化

遍历删除

console.log("--------------遍历-----------------------")
        var sss = [1, 2, 3, 4];
        console.log("遍历删除数组元素--before:", ary)
        let sary = sss.map((item)=>{
          console.log("--",item)
          if (item != 4){
            return item
          }
        })
        console.log("删除数组元素--after:", sary)

结果:

js数组数据的删除操作_数组_05

或者:

var arr5 = [1, 2, 3, 4];
        let result = [];
        for(let item of arr5){
          if(item != 4){
            result.push(item)
          }
        }
        console.log("删除数组元素--result:", result)

结果:

js数组数据的删除操作_数组_06

注意: 当然不推荐用遍历的方式,效率不好

删除数组中对象

let arrResult = [];
        arrResult.push({id:1,name:'apple'})
        arrResult.push({id:2,name:'banana'})
        arrResult.push({id:1,name:'orange'})
        console.log("删除数组元素--before:", arrResult)
        let fruit = {id:2,name:'banana'}
        //删除fruit
        let index = -1;//这里不能设置0,因为数组索引是从0开始的
        for(let i=0;i<arrResult.length;i++){
          let temp = arrResult[i];
          if(temp.id == fruit.id){
            index = i;
            break
          }
        }
        if(index >= 0){
          arrResult.splice(index,1);
        }
        console.log("删除数组元素--after:", arrResult)

删除之前结果:

js数组数据的删除操作_数组长度_07

删除之后结果:

js数组数据的删除操作_i++_08