今天实现功能用到了JS删除数组功能,整理记忆一下,方便查看。
方法:Array.PRototype.splice(index,count[, elem1, elem2, ....]);
参数:
index:数组元素的起始下标;(下标从0开始,长度通过.length获得)
count:需要被删除或替换元素的个数;
elems:需要插入到数组中的项;
返回值:返回从数组中被移除的项;
描述:使用Array类型的splice方法可以对数组元素进行插入、替换、删除;该方法将直接影响当前的数组对象 (与.slice(index1,index2)方法不同)并返回被删除后的数组项。
实例:
1、删除元素:
var items = [a,b,c,d,e];
result = items.splice(1,2);
释义:从items数组中删除元素 [b, c],并返回 [b, c] 给result;
2、替换元素:
result = items.splice(1,2,x,y);
释义:2表示替换掉两个从下脚标1开始切包含下脚标1的元素;即x,y替换了items数组中的 [ b , c ],并 返回[ b , c ]给result;
3、插入操作:
result = items.splice(1,0,x,y);
注:记录此方法的原因是因为做项目时有一个功能要循环遍历两个数组,再比较其中的参数是否相等,如果相等就移除其中一个数组中的元素,本身并没有什么难处。就在删除时改变数组的大小,导致数组遍历时出现异常。贴出代码加深 记忆:
for(var i = 0; i < userL.length; i++) {
for(var j = 0; j < judgeList.length; j++) {
if(userL[i] != undefined && userL[i] != '' && userL[i] != null) {
if(userL[i].id == judgeList[j].userId) {
//userL.splice(i,1); 这种方式就是改变了数组大小了,导致遍历出错。
userL.splice(i,1,'');//这样方式类似插入,删除后添加'' 进去,不改变数组的大小。
}
}
}
if(userL[i] != undefined && userL[i] != '' && userL[i] != null) {
$("#judgeL").append(userList(userL[i]));
}
}
下面是另一博客中说的比较好的贴过来了。
原文链接:http://caibaojian.com/js-splice-element.html
删除数组指定的某个元素
首先可以给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);
}
};
这样就构造了这样一个函数,比如我有有一个数组:
var emp = ['abs','dsf','sdf','fd']
假如我们要删除其中的fd,就可以使用:
emp.remove('fd');
删除的数组的某一项
splice(index,len,[item]) 注释:该方法会改变原始数组。
viasplice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值原文来自:http://caibaojian.com/js-splice-element.html
index:数组开始下标 len: 替换/删除的长度 item:替换的值,删除操作的话 item为空
如:arr = ['a','b','c','d']
删除
arr.splice(1,1) //['a','c','d'] 删除起始下标为1,长度为1的一个值,len设置的1,如果为0,则数组不变
arr.splice(1,2) //['a','d'] 删除起始下标为1,长度为2的一个值,len设置的2
替换
arr.splice(1,1,'ttt') //['a','ttt','c','d'] 替换起始下标为1,长度为1的一个值为‘ttt’,len设置的1
arr.splice(1,2,'ttt') //['a','ttt','d'] 替换起始下标为1,长度为2的两个值为‘ttt’,len设置的1
添加 ---- len设置为0,item为添加的值
//code from http://caibaojian.com/js-splice-element.html
arr.splice(1,0,'ttt') //['a','ttt','b','c','d'] 表示在下标为1处添加一项'ttt'
2:delete
delete删除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变
如:delete arr[1] //['a', ,'c','d'] 中间出现两个逗号,数组长度不变,有一项为undefined