除Object外,Array恐怕是ECMAScript中最常见的类型了,相比于其他语言来说,ECMAScript的数组中的每一项可以存放不同类型的值。
首先数组的length不只是只读的,可以通过它在数组的末尾添加新项或移除项。
添加新项:
var arr = ['a','b','c']
arr[arr.length] = 'd';//此时arr= ['a','b','c']
移除项:
var arr = ['a','b','c'];
arr.length = 2;//此时arr = ['a','b']
数组的方法:
1、push()方法将任意项添加到数组末端,参数以逗号分隔;
2、pop()方法移除数组末尾最后一项;
3、join()方法以拼接符拼接数组的每一项并返回字符串;
4、shift()方法移除数组第一项,并返回该值;
5、unshift()方法在数组的前端添加任意项,并返回新数组的长度;
6、sort()升序排列数组每一项;
7、reserve() 反转数组;
8、concat()拼接数组,将参数添加到数组末尾,可以变通的复制数组,复制后的数组与原数组并不指向同一地址;
9、slice() 接收一或两个参数,只有一个参数时,返回参数位置以后的所有数组项,当有两个参数时,返回两个参数位置中间的所有数组项;
10、splice()可以对数组进行插入、删除、替换操作 ,功能强大;
- 插入:插入任意项在指定位置,接收三组参数:起始位置、0、插入值;
- 删除:在指定位置删除任意项,接收两个参数:起始位置,要删除的项数;
- 替换:在指定位置插入任意项并删除任意项,接收三组参数:起始位置、要删除的项数,插入值,要插入的项数并不一定等于要删除的项数;
11、indexOf()在数组中正向查找某个值,接收两个参数:要查找的项,起始位置(可选),返回该值在数组中的位置索引,若没有该值,返回-1;
12、lastIndexOf()在数组末端开始查找某个值,用法同indexOf();
13、forEach()对数组中的每一项进行操作,但不会影响原数组的值,接收两个参数:每一项运行的函数,运行该函数的作用域对象(可选);
14、map() 对数组中的每一项进行操作,参数同forEach(),返回函数调用后结果组成的新数组;
15、filter() 对数组每一项进行操作,返回满足条件结果组成的新数组;
16、every()对数组每一项进行操作,如果全部都满足条件,返回True,否则返回False;
17、some()对数组每一项进行操作,只要其中一项满足条件就返回True;
var arr = ['1','2','3','4'];
var filterResult = arr.filter(e => {
return e > '2';
});
var mapResult = arr.map(e => {
return e+'map';
});
var everyResult = arr.every(e => {
return e > '5';
});
var someResult = arr.some(e => {
return e > '2';
});
var forEachResult = [];
arr.forEach(e => {
e = e + 'forEach';
forEachResult.push(e);
})
console.log(arr);//["1", "2", "3", "4"]
console.log(filterResult);//["3", "4"]
console.log(mapResult);//["1map", "2map", "3map", "4map"]
console.log(arr);//["1", "2", "3", "4"]
console.log(everyResult);//false
console.log(someResult);//true
console.log(arr);//["1", "2", "3", "4"]
console.log(forEachResult);//["1forEach", "2forEach", "3forEach", "4forEach"]
18、reduce()迭代数组的所有项,并返回最终结果值,接收两个参数:每一项上调用的函数,归并基础的初始值(可选),每一项上调用的函数需要有4个参数:前一个值,当前值,项的索引,数组对象;
19、reduceRight()用法同reduce(),只不过是从数组的末端开始执行;
var arr2 = [1,2,3,4,5];
var sum = arr2.reduce( function(prev,cur,index,array) {
return prev * cur;
},2)
console.log(sum);//240