我们先来看看js数组清空吧
当一个数组需要清空的时候,很多人使用下面的方法:
a = [];
我们知道javascript变量存储方式分为引用类型和直接量。数组属于对象,即引用类型,引用的是变量指针地址,之所以这样设计也是为了节省内存。
再说到上面的请空数组的方式,如果采用直接赋值一个新数组的方式,那么之前引用的数组可能不会被释放(有其他的引用),例如下面的代码:
代码如下 | 复制代码 |
|
这时候a和b就不是同一个数组了,清空了a而b还是指到之前的引用地址,除非你是故意的,否则这将会有隐患。
所以最佳的请空数组方式是:将length设置为0,即:
代码如下 | 复制代码 |
a.length = 0; |
js数组创建、访问
数组的创建
代码如下 | 复制代码 |
var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); //创建一个数组并赋值 |
要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
2、数组的元素的访问
代码如下 | 复制代码 |
arrayObj[1]= "这是新值"; //给数组元素赋予新的值 |
3、数组元素的添加
代码如下 | 复制代码 |
代码 arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度 arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。 |
js数组转换
一、数组转字符串(将数组元素用某个字符连接成字符串)
代码如下 | 复制代码 |
var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); |
二、字符串转数组(将字符串按某个字符切割成若干个字符串,并以数组形式返回)
代码如下 | 复制代码 |
var s = "abc,abcd,aaa"; ss = s.split(",");// 在每个逗号(,)处进行分解。 |
数组元素删除
var arr=['a','b','c'];
若要删除其中的'b',有两种方法:
1.delete方法:delete arr[1]
这种方式数组长度不变,此时arr[1]变为undefined了,但是也有好处原来数组的索引也保持不变,此时要遍历数组元素可以才用
代码如下 | 复制代码 |
for(index in arr) { document.write('arr['+index+']='+arr[index]); } |
这种遍历方式跳过其中undefined的元素
//经常用的是通过遍历,重构数组.
代码如下 | 复制代码 |
Array.prototype.remove=function(dx) |
数组常用函数
toString():把数组转换成一个字符串
toLocaleString():把数组转换成一个字符串
join():把数组转换成一个用符号连接的字符串
shift():将数组头部的一个元素移出
unshift():在数组的头部插入一个元素
pop():从数组尾部删除一个元素
push():把一个元素添加到数组的尾部
concat():给数组添加元素
slice():返回数组的部分
reverse():将数组反向排序
sort():对数组进行排序操作
splice():插入、删除或者替换一个数组元素