(一)创建数组的方法(两种方法)
a.构造方法
var newArr = new Array();
var colors = new Array(3);
var people = new Array("Xiao","Xuan","Ting");
b.数组字面量方法
var newArr = []; //创建一个空数组
var colors = ["red","yellow"]; //创建一个包含两项的数组
注意以下不要使用
var arr = [1,2,]; //IE下,arr会成为一个包含1,2,undefined的数组;其它浏览器会成为一个包含1,2两项的数组。
var options = [ , , , , ,]; //IE8及更早之前浏览器会创建一个包含6项的数组;其他浏览器会包含5项。
(二)检测数组
a.instanceof Array
if(value instanceof Array){
......
}
问题:instanceof 操作符假定只有一个全局执行环境。如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。如果从一个框架向另一个框架传入一个数组,呢么传入的数组在第二个框架中原生创建的数组分别具有各自不同的构造函数。
b.isArray()方法
if(Array.isArray()){
......
}
(三)转换方法
a.toString() //返回的是字符串,数组中各项以逗号隔开
b.valueOf() //返回的是数组
c.toLocaleString()
使用join()方法可以使用不同的分隔符来分割,参数只有一个,就是分隔符。
例:
var colors = ["red","green","blue"];
alert(color.join("||"));
(四)栈方法
a.push() //接受任意数量的参数,将它们逐个添加到数组末尾。返回数组长度
b.pop() //无参数,移除数组最后一项,返回移除的项。
(五)队列方法
队列在列表的末尾添加项,在队列的前端移除项。
shift() //去除列表的第一项,并返回移除项
unshift() //在数组前端添加任意项,并返回新数组长度
unshift()和pop()组合使用,可以模拟相反的队列。即在列表前端添加新项,在末尾移除项。
(六)重排序方法
a.reverse() //翻转数组项的顺序
b.sort() //比较的是字符串
(七)操作方法
a.concat()
会先创建一个数组的副本,然后将传入的参数逐个添加到副本的末尾,最后返回这个心构建的数组。
b.slice()
基于当前数组创建一个新数组
1)如只有一个参数,返回从该参数指定项到数组末尾项的新数组。
2)如两个参数,返回指定开始项到结束项,不包括结束项的新数组。
3)如有负数参数出现,则将数组总长度加负数,转换成正数,再计算。
c.splice()方法(最强大的数组方法)
1)删除:可以删除任意项,需指定两个参数(要删除的第一项的位置和要删除的项数)
eg:splice(0,2)会删除数组中的前两项。
2)插入:在指定的位置插入任意项。三个参数(起始位置,0(要删除的项),要插入的项)
eg:splice(2,0,"red","green")
3)替换:向指定位置插入指定数量的项,同时删除任意数量的项。三个参数(起始位置,要删除的项数,要插入的任意项)
eg:splice(2,1,“red”,"green")
(八)位置方法
a.indexOf()
b.lastIndexOf()
接收两个参数(要查找的项和起点位置(可选))
返回要查找的项在数组中的位置,或者在没有找到的情况下返回-1。
var number = [1,2,3,4,5,4,3,2,1];
alert(number.indexOf(4)); //3
alert(number.lastIndexOf(4)); //5
alert(number.indexOf(4,4)); //5
alert(number.lastIndexOf(4,4)); //3
(九)迭代方法
ECMAScript为数组定义了5种迭代方法,每个方法接收两个参数:要在每一项上运行的函数和(可选)运行该函数的作用域对象——影响this的值。
1)every() //如果每一项都满足条件,则返回true,否则false
2)some() //有满足条件的项即返回true,一个都没返回true
3)filter() //返回符合某些条件的数组项
4)map() //数组中的每一项执行给定函数
5)forEach() //没有返回值,本质上与for循环迭代数组是一样的。
eg:1)var number = [1,2,3,4,5,6];
var everyResult = number.every(function(item,index,array){
return (item > 2)
});
alert(everyReuslt); //false
var someResult = number.some(function(item,index,array){
return (item >2)
})
alert(someResult); //true
var filterResult = number.filter(function(item,index,array){
return (item > 2);
})
alert(filterResult); //[3,4,5,4,3]
var mapResult = number.map(function(item,index,array){
return item*2;
})
alert(mapResult); //2,4,6,8,10,8,6,4,2