论坛首页 Web前端技术论坛

js中数组的remove

浏览 55933 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-07-04  
    今天在写代码的过程中,javascript的数组,想要从一个数组中将指定的元素删除,刚开始想的是直接将该元素直接等于null,但是这样在数组中并没有移除元素,也就是说数组长度没有改变,后来就想到了以下方法:
/*
 *  方法:Array.remove(dx)
 *  功能:根据元素值删除数组元素.
 *  参数:元素值
 *  返回:在原数组上修改数组
 *	作者:pxp
 */
Array.prototype.indexOf = function (val) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == val) {
			return i;
		}
	}
	return -1;
};
Array.prototype.removevalue = function (val) {
	var index = this.indexOf(val);
	if (index > -1) {
		this.splice(index, 1);
	}
};


/*
 *  方法:Array.remove(dx)
 *  功能:根据元素位置值删除数组元素.
 *  参数:元素值
 *  返回:在原数组上修改数组
 *	作者:pxp
 */
Array.prototype.remove = function (dx) {
	if (isNaN(dx) || dx > this.length) {
		return false;
	}
	for (var i = 0, n = 0; i < this.length; i++) {
		if (this[i] != this[dx]) {
			this[n++] = this[i];
		}
	}
	this.length -= 1;
};




   发表时间:2012-07-06  
splice
0 请登录后投票
   发表时间:2012-07-06   最后修改:2012-07-06
楼主其实可以这样:
function removeItem(arys,item){
   for(int i=0;i < arys.length;i++) {
       if(item == arys[i]) arys.remove(item);
   }
}
0 请登录后投票
   发表时间:2012-07-06  
resp 写道
楼主其实可以这样:
function removeItem(arys,item){
   for(int i=0;i < arys.length;i++) {
       if(item == arys[i]) arys.remove(item);
   }
}

恩,这样也可以,后来我又想了一种,代码如下
function remove(index){
	return arr.slice(0,index).concat(arr.slice(index+1,arr.length))
}
0 请登录后投票
   发表时间:2012-07-06  
嗯, 简介是美
0 请登录后投票
   发表时间:2012-07-09  
SpringLin 写道
嗯, 简介是美

根据元素位置值删除数组元素. 
list消减后会减少原来的list数目!
0 请登录后投票
   发表时间:2012-07-10   最后修改:2012-07-10
额,好吧,看错楼主主题了。还是把以前收集的remove发出来吧。
Array.prototype.remove = function(from, to) {
	var rest = this.slice((to || from) + 1 || this.length);
	this.length = from < 0 ? this.length + from : from;
	return this.push.apply(this, rest);
};

虽然和楼主的要求不符合。也借鉴下吧。
0 请登录后投票
   发表时间:2012-07-12  
弱弱问一句,你们当splice是吃干饭的么?
0 请登录后投票
   发表时间:2012-07-13  
yinwinzhu 写道
弱弱问一句,你们当splice是吃干饭的么?

弱弱的问一句,你当splice是神么?
0 请登录后投票
   发表时间:2012-07-13   最后修改:2012-07-13
唉,有现成的方法splice,例如myArray.splice(0,1);

splice 方法API:
从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。
arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])

参数 arrayObj 必选项。一个 Array 对象。
start : 必选项。指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。
deleteCount : 必选项。要移除的元素的个数。
item1, item2,. . .,itemN : 必选项。要在所移除元素的位置上插入的新元素。

说明:splice 方法可以移除从 start 位置开始的指定个数的元素并插入新元素,从而修改 arrayObj。返回值是一个由所移除的元素组成的新 Array 对象。
  • 大小: 98.1 KB
1 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics