A simple way to delete array elements and clear arrays in js

1. Clear the array

?
1
2
3
var ary = [1,2,3,4];
ary.splice(0,ary.length); //清空数组
console.log(ary); // 输出 [],空数组,即被清空了

2. Delete array elements

?
1
2
3
var ary = [1,2,3,4];
ary.splice(0,1);
或 ary.splice($.inArray(2, ary), 1); 其中$.inArray(2, ary)用来查找某元素在数组中的索引位置。

3. There are several methods for js to delete arrays

var arr=['a','b','c'];
To delete 'b', there are two ways:

1, delete method: delete arr [1]

In this way, the length of the array does not change. 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 be used to traverse the elements of the array.

?
1
2
3
4
for (index in arr)
{
  document.write( 'arr[' +index+ ']=' +arr[index]);
}

This traversal method skips the undefined element
* This method is supported by IE4.o later

2. Array object splice method: arr.splice(1,1);

In this way, the length of the array changes accordingly, but the original array index also changes accordingly.

The first 1 in the splice parameter is the starting index of deletion (counting 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, namely 'b';

At this point, the array elements can be traversed in a normal way, such as for, because the deleted elements are in

not retained in the array

* This method is only supported after IE5.5

It is worth mentioning that the splice method can also add new array elements while deleting array elements.

For example, arr.splice(1,1,'d','e'), two elements of d and e are added to the array arr

The resulting array becomes arr:'a','d','e','c' 

Also, JavaScript truncates an array by setting its length property, which is the only way to shorten the length of an array.
If you use the delete operator to delete an element in an array, although that element becomes undefined, the length property of the array does not change the two methods of deleting an element and changing the length of the array.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
  * 方法: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);

Example 2,

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
  * 方法:Array.baoremove(dx)
  * 功能:删除数组元素.
  * 参数:dx删除元素的下标.
  * 返回:在原数组上修改数组.
  */
  //也可以用splice来实现.
 Array.prototype.baoremove = function (dx)
 { // www.jb51.net
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);

In IE5 or lower, JavaScript's Array (array) object does not provide an out-of-the-box method for removing elements of an array. In the IE5.5+ version, although there is a splice method, it does not delete a certain item (or several items), but only clears the value of a certain item (or several items), which means that the item still exists , the length of the array has not changed.

In fact, you can add a delete method to the array yourself (note that this refers to actually removing an item of the array from the array member). Perhaps, you will think of using a loop to reassign the array, which of course can be done, but it is very inefficient.

The following introduces the method of customizing the deletion of the array by using the two methods slice and concat of the Array object.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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);

The above code only uses the two methods of the Array object flexibly to achieve the basic requirements, which is good.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325294416&siteId=291194637