Javascript的delete与splice的区别
splice
splice(index,len,item)
splice() 方法用于对数组元素进行删除添加替换操作。返回值为删除的元素组成的数组。
注意:该方法会改变原始数组。
index:数组开始下标
len: 删除的长度 ,如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item:替换的元素,删除操作的话 item 为空( 需要在删除元素的前面插入的元素 )
删除
选定开始删除下标后 , 第二个参数指定删除的元素个数 ,第三个参数 为空
var arr = [1,2,3,4] // 只删除 1 个元素 arr.splice(1,1) // [ 1, 3, 4 ] // 删除 多个元素 arr.splice(1,2) // [ 1, 4 ]
插入
splice 方法不止可以用来删除,它属于比较全面的数组方法,同样可以进行插入操作,
如果把第二个参数设置 为 0 ,表示删除的元素个数为零 ,在指定 index(索引) 前面插入元素(如下面代码所示)
var arr = [1,2,3,4] // 只插入 1 个元素 arr.splice(1,0,1.5) // [ 1, 1.5, 2, 3, 4 ] // 插入多个元素 arr.splice(1,0,1.5,1.6) // [ 1, 1.5, 1.6, 2, 3, 4 ]
插入并删除
注意 :当指定删除元素的个数大于可操作的长度,可正常执行,不会报错
var arr = [1,2,3,4] // 插入且删除 arr.splice(1,2,1.5) //[ 1, 1.5, 4 ] // 指定删除个数为 2 ,可操作个数为 1 arr.splice(3,2,1.5) // [ 1, 2, 3, 1.5 ]
delete
对象属性删除
delete可以删除对象属性
// 对象属性删除 function fun(){ this.name = '张三'; } var obj = new fun(); console.log(obj.name); // 张三 delete obj.name; console.log(obj.name); //undefined
变量删除
直接用 delelte 删除不了变量
// 变量删除 var name = '张三'; delete name console.log(name) //张三
delelte 删除不了原型链中的变量
function fun(){ this.name = '张三'; } var obj = new fun(); fun.prototype.age = 18; delete obj.age; console.log(obj.age) //18
两者的区别
splice 方法会改变原始数组
var arr = [1,2,3,4] // 删除 arr.splice(1,1) // [ 1, 3, 4 ]
delete 操作后被删除的元素变成了 <1 empty item> ,其他的元素的键值还是不变。
var arr = [1,2,3,4] delete arr[1] console.log(arr) // [ 1, <1 empty item>, 3, 4 ]