js中Array对象的属性和方法总结
一:属性
- length
length除了常见的读取数组的长度以外,也可以通过修改length的值来给数组增加或者删除元素,当length数值减少的时候,从数组末尾删除相应元素;增加的时候增加相应数量的元素,但是新增元素没有赋值的时候,初始值为undefined;
二:方法
检测数组
if(obj instanceof Array){
//执行对数组的操作
}
但是这种方法有一个问题。当页面由框架组成的时候,不同的框架中的Window对象是不同的,而Array对象实际上是Window对象的一个属性,如果再frame中定义数组 的时候,这时候判断就会返回false。
下面这种方法是ECMAScript5中新增,在IE9+,和较新的浏览器中实现的新方法
if(Array.isArray(obj)){
//执行对数组的操作
}
对没有实现该方法的浏览器,要准确检测数组,可以使用以下方法:(这个方法中尚有为理解的部分,稍后更新)
2. 转换方法
toString() 、 toLocaleString()
执行这两种方法的时候,数组会为每一个元素执行这两种方法。得到的字符串以 , (逗号)分割每一个元素。
join("|");
使用join()方法可以选择各种分隔符,什么都不写,默认是 ,
valueOf()
3. 栈方法
栈的特点(last in first out),后进先出。
push(value1,value2)方法模仿进,向数组的末端添加元素,可以多个;也可以使用arr[arr.length]=value;方法模仿进;
arr.pop()方法模仿出,从数组末端读取元素,一次读取一个;
4. 队列方法
队列的特点(first in first out),先进先出
同栈方法一样通过push()向数组末端添加元素;
arr.shift();从数组的前端读取元素,一次读取一个;
ECMAScript还提供了arr.unshift(value1,value2)方法,可以在数组前端添加若干个元素。
所以各自有两种实现栈的方法和实现队列的方法;
push(value1,value2) pop() 后进先出 栈
push(value1,value2) shift() 先进先出 队列
unshift(value1,value2) pop() 先进先出 队列
unshift(value1,value2) shift() 后进先出 栈
以上方法中,添加元素返回的是,数组的新长度。但是unshift(value1,value2)在IE7(含)及以下版本中返回的是undefined;
读取元素,返回的是读取的元素,类型也如同元素。并且数组的长度减一;
5. 重排序方法
arr.reverse()反转,arr.sort()排序,默认按照ASCII码值排序。
arr.sort()方法中可以传入一个代表比较规则的参数。例如:asc(升序),desc(降序),也可以自己定义名字,常见的还有compare;
举例说明:
function asc(value1,value2){
if(value1<value2){
return -1;
}else if(value1 > value2){
return 1;//这个地方只要是>0的数字,就交换两个数的顺序;
}else{
return 0;
}
}
至于降序排列,可以将asc函数中的1和-1颠倒位置;
如果说,数组中的元素都是数值类型的,则可以使用以下简写的规则。
function compare(value1,value2){
return value2 - value1;
}
6. 操作方法
① arr.concat(value1,value2)
这个方法先创建一个数组的副本,然后将传入的参数添加到副本的末尾,如果参数中也有数组,就将该数组中的所有元素都添加进去;然后返回新数组;但是原来的数组 arr不发生变化;
② arr.sliice(3,7);
这个方法读取该数组下标为3(含3)到7(不含7)之间的元素,组成新的数组返回。其中,7可以省略,则返回的是3到末尾的所有元素。原来的数组不发生变化。
arr.slice(-3,-1);
当slice方法中传入的是负值的时候,从数组的末端开始读取,最后一个是-1,然后依次递减。跟正值一样-1也可以省略,然后读取到最前端。
当第二个参数小于第一个参数的时候,返回的是空数组。
③splice(参数1,参数2,参数3,……) 这个方法是数组中最强大的方法,但是主要用来向数组中间添加元素;
参数1,是数组要替换元素的下标;参数2,是要替换的个数;以后的参数是要插入进去的元素;
《1》删除
将“参数1”设置为要删除元素的下表,“参数2”设置为要删除的个数,插入元素不写,就实现了删除指定位置的元素;arr.splice(2,2);
var t = [0,1,2,3,4,5,6,7,8,9];
var d = t.splice(2,2);
document.write(t.toString()+"<br/>");//0,1,4,5,6,7,8,9
document.write(d.toString());//2,3
《2》插入
这个主要是将“参数2”设置为0,arr.splice(2,0,11,22);
var t = [0,1,2,3,4,5,6,7,8,9];
var d = t.splice(2,0,11,22);
document.write(t.toString()+"<br/>");//0,1,11,22,2,3,4,5,6,7,8,9
document.write(d.toString());//空数组
《3》替换
这个是所有的参数写的最完整的了。
splice(2,1,22,33,44);替换的数量跟删除的数量可以不相等;
这个方法返回的是删除元素组成的数组,没有删除元素时候,返回一个空数组;
7. 位置方法
① arr.indexOf("element",start_index);element是要查找的项,start_index是开始的下标;包含start_index下标所在的元素。只找到第一个对应的下标,没有返 回-1;
② arr.lastIndexOf(“element”,start_index);同上,但是是从后往前数;也是只读取到第一个对应的下标;
8. 迭代方法
数组中有各种各样的迭代方法,太好了……
所有的迭代方法都包含两个参数,第一个是每一个元素要执行的函数,第二个是作用域对象(可以省略)
函数的格式为:
function(item,index,array);item:数组项,数组项下标,数组对象本身;
every(),每一个元素都在执行函数后返回true,则该函数返回true;
some(),任意一项返回true,则返回true;
filter(),对每一个元素都运行函数后,返回true项组成的数组;
map(),每一个元素都运行函数,将每个元素返回的结果组成一个新的数组;
forEach(),没有返回值。类似于for循环
9. 归并方法
下边的两个方法都包含两个参数,第一个是数组每一项都调用的函数,第二个是作为归并基础的初始值。然后返回一个最终值。
执行的函数格式为:
function(pre,cur,index,array){
//每一项执行的操作;
}
var t = [0,1,2,3,4,5,6,7,8,9];
alert(t.reduce(function(pre,cur,index,array){
return pre+cur;
}));//45
每一项执行完以后返回的值,作为后一项的pre;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。