Home >Web Front-end >JS Tutorial >Summary of several methods to delete arrays in js
var arr=['a','b','c'];
To delete the 'b', there are two methods:
1.delete method: delete arr [1]
In this way, the length of the array remains unchanged. At this time, arr[1] becomes undefined, but it also has the advantage that the index of the original array remains unchanged. At this time, it can only be used to traverse the array elements.
for(index in arr) { document.write('arr['+index+']='+arr[index]); }
This traversal method skips undefined elements
* This method is supported by IE4.o and later
2. Array Object splice method: arr.splice(1,1);
In this way, the array length changes accordingly, but the original array index also changes accordingly.
The first 1 in the splice parameter is The starting index of deletion (calculated from 0), here is the second element of the array
The second 1 is the number of deleted elements, here only one element is deleted, that is, 'b';
At this time, you can traverse the array elements using the normal array traversal method, such as for, because the deleted elements are not retained in the array
* This method is only supported after IE5.5
It is worth mentioning that while the splice method deletes array elements, it can also add new array elements
For example, arr.splice(1,1,'d','e'),d, The two elements e are added to the array arr
The resulting array becomes arr:'a','d','e','c'
JavaScript sets the length attribute of the array Truncating an array is the only way to shorten the length of the array. If you use the delete operator to delete an element in the array, although that element becomes undefined, the length property of the array does not change. If the element is deleted, the length of the array does not change. Changed method.
/* * 方法:Array.remove(dx) * 功能:删除数组元素. * 参数:dx删除元素的下标. * 返回:在原数组上修改数组 */ //经常用的是通过遍历,重构数组. 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 } a = ['1','2','3','4','5']; alert("elements: "+a+"nLength: "+a.length); a.remove(0); //删除下标为0的元素 alert("elements: "+a+"nLength: "+a.length);
/* * 方法:Array.baoremove(dx) * 功能:删除数组元素. * 参数:dx删除元素的下标. * 返回:在原数组上修改数组. */ //我们也可以用splice来实现. Array.prototype.baoremove = function(dx) { if(isNaN(dx)||dx>this.length){return false;} this.splice(dx,1); } b = ['1','2','3','4','5']; alert("elements: "+b+"nLength: "+b.length); b.baoremove(1); //删除下标为1的元素 alert("elements: "+b+"nLength: "+b.length);
We know that in IE5 or lower versions, JavaScript's Array (array) object does not provide a ready-made method to delete array elements. In IE5.5+, although there is a splice method, it does not delete a certain item (or items), but only clears the value of a certain item (or items), which means that the item still exists. , the length of the array has not changed.
In fact, we can add a delete method to the array ourselves (note that this refers to actually removing an item of the array from the array members). Maybe you will think of using a loop to reassign the array. This is certainly possible, but it is very inefficient.
Below we introduce how to use the two methods slice and concat of the Array object to customize the deletion of the array.
The specific code is as follows, please pay attention to the comments inside.
Array.prototype.del=function(n) { //n表示第几项,从0开始算起。 //prototype为对象原型,注意这里为对象增加自定义方法的方法。 if(n<0) //如果n<0,则不进行任何操作。 return this; else return this.slice(0,n).concat(this.slice(n+1,this.length)); /* concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。 这里就是返回this.slice(0,n)/this.slice(n+1,this.length) 组成的新数组,这中间,刚好少了第n项。 slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。 */ } //我们来试一试这个自己增加的方法 var test=new Array(0,1,2,3,4,5); test=test.del(3); //从0算起,这里也就是删除第4项。 alert(test);
In this way, we only use the two methods of the Array object to achieve our requirements.
For more js summary of several methods of deleting arrays, please pay attention to the PHP Chinese website for related articles!