JavaScript语言核心—Third days(accessories)
ECMAScript5 Array新增的方法
Array.isArray(element):这是Array对象的一个静态函数,用来判断一个对象是不是数组。
var a = new Array(123); var b = new Date(); console.log(Array.isArray(a)); //true console.log(Array.isArray(b)); //false
.indexOf(element) / .lastIndexOf(element):这两个方法用于查找数组内指定元素位置,并返回索引,没有找到返回-1。
。indexOf(item,start):接受两个参数,item:查找的元素 start:字符串开始检索的位置
。lastIndexOf(item,start):接受两个参数,item:查找的元素 start:字符串开始检索的位置
。对原数组不做改变
var a = new Array(1,2,3,4,5,6,2); console.log(a.indexOf(2)); //返回 1 console.log(a.lastIndexOf(2)); //返回 6
.forEach(element,index,array):遍历数组,参数为一个回调函数,回调函数有三个参数:当前元素、元素索引、整个数组。
var a = new Array(1,2,3,4,5,6); a.forEach(function(element,index,array){ array[index] = element+1; }); console.log(a); //[2,3,4,5,6,7]
.every(function(element,index,array)) / .some(function(element,index,array)):这两个函数类似于离散数学中的逻辑判定,回调函数返回一个布尔值。
every 是"所有"函数的每个回掉函数都返回true的时候才会返回true,当遇到false的时候终止执行,返回false;
some 函数是"存在"有一个回调函数返回true的时候终止执行并返回true,否则返回false。
在空数组上调用every返回true,some返回false。
var a = new Array(1,2,3,4,5,6); console.log(a.every(function(element,index,array){ console.log(index+":"+element); return element < 5; }));
/*0:1 1:2 2:3 3:4 4:5 false*/
var a = new Array(1,2,3,4,5,6); console.log(a.some(function(element,index,array){ console.log(index+":"+element); return e>4; }));
/*0:1 1:2 2:3 3:4 4:5 true*/
.map(function(elemrnt)):与forEach类似,遍历数组,回调函数返回值组成一个新数组返回,新数组索引结构和原数组一致,原数组不变。
var a = new Array(1,2,3,4,5,6); console.log(a.map(function(element){ return element*element; })); //[1,4,9,16,25,36] console.log(a); //[1,2,3,4,5,6]
.filter(function(element)):返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加,新数组只包含返回true的值,索引缺失的不包括,原数组保持不变。
var a = new Array(1,2,3,4,5,6); console.log(a,filter(function(element){ return element%2 == 0; })); //[2,4,6] console.log(a); //[1,2,3,4,5,6]
.reduce(function(v1,v2),value) / .reduceRight(function(v1,v2).value):遍历数组,调用回调函数,将数组元素组合成一个值,reduce从索引最小值开始,reduceRight反向,方法有两个参数。
1.回调函数:把两个值合为一个,返回结果
2.value,一个初始化值,可选
var a = new Array(1,2,3,4,5,6); console.log(a,reduce(function(v1,v2){ return v1+v2; })); //返回 21 console,log(a,reduceRight(function(v1,v2){ return v1-v2; },100)); //返回 79
总结:知识的积累在于归纳和总结