删除数组指定的某个元素

原文链接:http://caibaojian.com/js-splice-element.html

JavaScript中如何删除数组某个元素,我们有需要了解splice这个方法,翻译为剪接,arr.splice(0,1)表示删除数组的第一个,arr.splice(1,2)表示删除从第二个开始,长度为2个的元素。

首先可以给js的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为:

Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
};

然后使用通过得到这个元素的索引,使用js数组自己固有的函数去删除这个元素:
代码为:

//code from http://caibaojian.com/js-splice-element.html
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])    注释:该方法会改变原始数组。·

splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值

index:数组开始下标        len: 替换/删除的长度       item:替换的值,删除操作的话 item为空

如:arr = [‘a‘,‘b‘,‘c‘,‘d‘]

删除

//删除起始下标为1,长度为1的一个值(len设置1,如果为0,则数组不变)
var arr = [‘a‘,‘b‘,‘c‘,‘d‘];
arr.splice(1,1);
console.log(arr); 
//[‘a‘,‘c‘,‘d‘]; 

//删除起始下标为1,长度为2的一个值(len设置2)
var arr2 = [‘a‘,‘b‘,‘c‘,‘d‘]
arr2.splice(1,2);
console.log(arr2);
//[‘a‘,‘d‘]

替换

//替换起始下标为1,长度为1的一个值为‘ttt’,len设置的1
var arr = [‘a‘,‘b‘,‘c‘,‘d‘];
arr.splice(1,1,‘ttt‘);
console.log(arr);       
//[‘a‘,‘ttt‘,‘c‘,‘d‘] 

var arr2 = [‘a‘,‘b‘,‘c‘,‘d‘];
arr2.splice(1,2,‘ttt‘);
console.log(arr2);      
//[‘a‘,‘ttt‘,‘d‘] 替换起始下标为1,长度为2的两个值为‘ttt’,len设置的1

添加 ----  len设置为0,item为添加的值

var arr = [‘a‘,‘b‘,‘c‘,‘d‘];
arr.splice(1,0,‘ttt‘);
console.log(arr);       
//[‘a‘,‘ttt‘,‘b‘,‘c‘,‘d‘] 表示在下标为1处添加一项‘ttt‘

2:delete      

delete删除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变

var arr = [‘a‘,‘b‘,‘c‘,‘d‘];
delete arr[1];
arr; 
//["a", undefined × 1, "c", "d"] 中间出现两个逗号,数组长度不变,有一项为undefined

更新2016-11-17:在stackoverflow高分回答上看到jquery之父John Resig曾经的文章写过的一个代码:

// Array Remove - By John Resig (MIT Licensed)
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);
};

下面给出一些实际的用例:

// 移除数组中的第二项
array.remove(1);
// 移除数组中的倒数第二项
array.remove(-2);
// 移除数组中的第二项和第三项(从第二项开始,删除2个元素)
array.remove(1,2);
// 移除数组中的最后一项和倒数第二项(数组中的最后两项)
array.remove(-2,-1);

这个例子跟上面第一个的还是挺相似的,不过没有检查元素的具体项目,而是通过元素在数组的下标位置来定位删除。

原文地址:https://www.cnblogs.com/wuxu/p/10709114.html

时间: 2024-10-03 15:48:37

删除数组指定的某个元素的相关文章

js删除数组指定的某个元素

1.给js数组对象原型加indexof方法 获得元素索引 Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; }; 2.给js数组对象原型加remove方法 去掉元素 Array.prototype.remove = function(val) { var index = this.indexOf(v

[Js]删除数组指定元素

写在前面 在最近的项目中,有用到js对数组的操作,之前自己几乎没有用到这种方法,这里就记录一下,算是对学到的东西的一种总结吧. 数组对象splice方法 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目.该方法会改变原始数组. 基本语法 arrayObject.splice(index,howmany,item1,.....,itemX)  参数说明 index:必需.整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置. howmany:必需.要删除的项目数量.

js删除数组里的某个元素

首先可以给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(v

php删除数组中指定值的元素

php删除数组中指定值的元素 /** * 删除数组中指定值的元素 * @author: ibrahim * @param array $arr 数组 * @param string $val 值 * @return boolean */ function array_del(&$arr,$val){ if( empty($val) ) return false; $key = array_search($val,$arr); $keys= array_keys($arr); $position

C#如何删除数组中的一个元素

C#如何删除数组中的一个元素,剩余的元素组成新数组,数组名不变double[] arr = new double[n];需要删除的是第m+1个数据arr[m]求新数组arr.(新数组arr包含n-1个元素)m,n数值已知 double[] arr = new double[50]; List<double> list = arr.ToList(); list.RemoveAt(5+1); double[] newarr = list.ToArray(); 转:http://www.zybang

删除数组中的重复元素,并返回去重的数组

/*删除数组中的重复元素,并返回去重的数组*/ function delRepeatNum(arr){ var result = []; var middleObj = {}; var temp; for(var i = 0; i < arr.length; i++){ temp = arr[i]; middleObj[temp] = 1; } for(temp in middleObj){ result.push(temp); } return result; }

使用sort加个简单的算法,不循环整个数组而删除数组内的某些元素。

昨天遇到一个这样的场景: 有一个不分页的商品列表,里面可能有上千条数据(而且可能是静态数据)甚至更多,这里有个删除功能,需要我们删除其中的一些商品. 这时我的第一反应就是,数据过多不能循环整个数组,只有获取到它们的索引,然后循环得到的索引,使用数组的splice()方法对它进行删除.并且我这样做了,但是发现了一个致命的bug. bug的原因是这样的: 我先得到了一组索引(就是我所需要删除的商品的索引),然后循环了这组索引,在每次循环的时候我执行了splie()方法,但是由于splice方法执行后

js tool 方法之删除数组指定项

最近又开始写博文了,还是在自己的本地项目上做一些小的方法案例. 之前撸代码的时候总是遇到删除数组里某个元素的问题,JS没提供便捷的方法,只能自己写个循环处理,所幸自己写个方法,以后博客项目里要用到就不用重复去写代码了. 方法名:RemoveArrItemByVal 移除数组中的指定项,根据某个值 考虑到参数输入的问题,对此做了一个小小的逻辑校验,如果没有传递参数会返回一个新的空数组. 可能会有人问为什么不返回传入的arr数组呢? 因为考虑到如果传入的arr不是个数组,那这个方法返回的也就不是一个

php删除数组中相同的元素,只保留一个相同元素

<?php// 删除数组中相同元素,只保留一个相同元素function formatArray($array){sort($array);$tem = ”;$temarray = array();$j = 0;for($i=0;$i<count($array);$i++){if($array[$i]!=$tem){$temar(www.111cn.net)ray[$j] = $array[$i];$j++;}$tem = $array[$i];}return $temarray;}//测试 调