javascrip中array使用(续)
ECMAScript 5中的数组的方法
Ecmascript5定义了9个新的数组方法遍历,映射,过滤,检测,简化和搜索数组。
1.forEach()
Array.orEach()方法从头到尾遍历数组,第一个参数为此元素值,第二个参数为索引值,第三个参数为此数组this引用。
var data=[1,2,3,4,5]; var sum=0; data.forEach(funciton (item){ sum+=item; }); sum; //=>15; data.forEach(funciton(v,i,a){ a[i]=v+a; }) data; //=>[2,3,4,5,6];
2.map()
Array.map()方法将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值,此方法返回的为一个数组。
var arr=[1,2,3,4]; var temp=arr.map(funciton (value){ return value*value; }); temp; //temp:[1,4,9,16]
3.filter()
Array.filter()方法返回的数组元素是调用数组的一个子集。传递的函数是用来逻辑判定的:该函数返回true和false。
var arr=[1,2,3,4,5]; var smallValues=arr.filter(funciton (value){ reutrn value<3; }); smallValues; //smallValues:[1,2]; var everyOther=arr.filter(function (value){ return value%2==0; }); everyOther; //everyOther:[1,3,5];
4.every()和some()
Array.every和Array.some()方法是数组的逻辑判定:他们对元素应用指定的函数进行判定,返回true和false。every()方法针对所有的数组元素进行判定,some()则为存在此条件的数组元素进行判定
var arr=[1,2,3,4,5]; arr.every(funciton (value){ return value<10; }); //返回true:因为数组元素都小于10为真; arr.some(funciton (value){ return value%2==0; }); //返回true:因为数组元素中存在偶数 arr.some(isNan); //返回false:因为数组元素中不存在非空元素;
5.reduce()和reduceRight()
Array.reduce()和Array.reduce.Right()方法使用指定的函数将数组元素进行组合,生成单个值。reduce()方法第一个参数为执行化简操作的函数,第二个参数为初始值。reduceRight()方法像似,区别是便利时reduceRight索引是从高至低,reduce索引是从低到高。
var arr=[1,2,3,4,5]; var sum=arr.reduce(funciton (x,y){ return x+y;},0); //数组求和; var product=arr.reduce(funciton (x,y){ return x*y;},1 ); //数组求积; var max=arr.reduce(function (x,y){ return x>y?x:y;}); //数组求最元素;
var big=arr.redureRight(funciton (accumulator,value){
return Math.pow(value,accumulator);
});计算1^(2^(3^(4^5)))。乘方的优先顺序是从右到左。
6.indexOf()和lastIndexOf()
Array.indexOf()和lastIndexOf()方法,搜索整个数组中具有给定值的元素,返回找到第一个元素的索引,如果未找到返回-1;而LastIndexOf()方法是反响索引。第一个参数为,要搜索的元素,第二个参数,开始位置。