JS对数组的操作

今天实现功能用到了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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值