创建数组的方式
- 使用Array构造函数
var arr = new Array();
var arr = new Array(2); //length为2的数组
var arr = new Array("a","b","c"); //包含a,b,c的数组
//new 操作符可省略
- 数组字面量
var arr = [];
var arr = ['a','b','c'];
数组的length属性不是只读的,我们可以通过设置这个属性从数组的末尾移除项或添加项
var arr = [1,2,3];
arr.length = 2;
console.log(arr[2])//undefined
arr[arr.length] = 4;
console.log(arr[arr.length-1])//4
检测数组
- instanceof
var arr = [];
arr instanceof Array //true 如果一个网页存在两个不同的全局执行环境,从而就会存在两个不同版本的Array构造函数,这个要返回true,arr必须是一个数组,而且要和Array构造函数在同个作用域
- isArray
Array.isArray(arr) //true ie9+
function isArray(value){
return Object.prototype.toString.call(value) == "[object Array]"
}
转换方法
var arr = ['a','b','c'];
console.log(arr.toString()) //a,b,c
console.log(arr.valueOf()) //['a','b','c']
console.log(arr.toLocaleString()) //a,b,c
console.log(arr.join("||")) //a||b||c
常用方法
push() //向数组的末尾添加任意数量的参数,返回新的length
pop() //移除数组的最后一项,返回被移除的项
shift() //移除数组中第一项,返回被移除的项
unshift() // 向数组的前端添加任意数量的参数,返回新的length
reverse() //反转数组
sort() //sort方法会调用每一项的toString()转型方法,然后比较得到的字符串
//sort方法可以接受一个比较函数
function compare(value1,value2){
if(value1 < value2){
return -1 //value1在value2之前返回-1
}else if(value1 > value2){
return 1
}else{
return 0 //相等
}
}
concat() //创建当前数组的一个副本,将接收到的参数添加到这个副本的末尾,返回新构建的数组
slice() //截取数组,接收一或两个参数,可接受负值
splice() //可接受多个参数,第一个是起始位置,第二个是要删除的项数,后面是要插入的项,返回从原始数组中删除的项组成的数组
indexOf() //可接受两个参数,要查找的项和查找起点(可选),找到返回位置,找不到返回-1
lastIndexOf() //从数组的末尾开始查找 ie9+
迭代方法
every() //每一项都为true,则返回true
filter() //返回结果为true组成的数组
forEach() //没有返回值
map() //返回调用结果组成的数组
some() //任一项返回true,则返回true
//上述方法接收一个callback和一个运行改函数的作用域对象(可选,影响this的值)
function callback(item,index,array){
//item是数组的每一项
//index是每一项的索引
//array是数组对象本身
}
归并方法
reduce() // 从第一项开始
reduceRight() //从数组的最后一项开始向前遍历
//这两个方法都会迭代数组的每一项,构建一个最终返回的值
//可以接受一个callback和一个作为归并基础的初始值(可选)
function callback(prev,cur,index,array){
//prev前一个值
//cur当前值
//index项的索引
//array数组对象
}
//这个callback返回的任何值都会作为第一个参数自动传递给下一项