一、需求要删掉下标为index的元素
1.splice:删除后,后面的元素自动填补到前面
arr.splice(index, 1) (下标index开始,删除1个)
注意:
上面的代码中,我们要注意,如果想修改 arr 的值,直接这样操作 arr 直接就变了,而不要写作 arr= arr.splice(1,1),因为 splice() 方法的返回值为删除掉的元素。
补充:
- spice增加: arr.splice(1,0,‘str’); //结果arr=[‘a’,‘str’,‘b’,‘c’,‘d’]
- spice替换: arr.splice(1,1,‘str’); //结果arr=[‘a’,‘str’,‘c’,‘d’]
- spice替换2: arr.splice(1,2,‘str’);
//结果arr=[‘a’,‘str’,‘d’](就是说:下标1开始2个换成1个“str”) - spice删除多个: arr.splice(1,2); //结果arr=[‘a’,‘d’]
2.delete:删除后,该下标位置元素为undefined
delete arr[index];//结果arr=['a',undefined,'c','d']
二、需求要删掉值为‘fd’的元素
首先可以给js的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为:
Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
};
然后使用通过得到这个元素的索引,使用js数组自己固有的函数去删除这个元素:
代码为:
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
这样就构造了这样一个函数,比如我有一个数组,要删除其中的fd,就可以使用:
var emp = ['abs','dsf','sdf','fd']
emp.remove('fd');