对于ECMAscript5这个版本的Array新特性补充:
位置方法:indexOf lastIndexOf
var arr = [1, 2, 3, 4, 5, 4, 3, 2, 1]; //查找元素位置的方法 indexOf() lastIndexOf() 在查找元素时使用===符比较 //indexOf()方法参数: //一个参数:表示在数组中查找的元素值 //两个参数: 第一个参数表示起始位置,第二个参数表示查找的元素值 var index = arr.indexOf(4); console.info(index); // 3 var index = arr.indexOf(4, 4); console.info(index); // 5 var index = arr.lastIndexOf(2); console.info(index); // 7
迭代方法:every filter forEach some map
var arr = [1, 2, 3, 4, 5, 4, 3, 2, 1]; //五个新加迭代的方法 //every filter forEach map some 所有方法都不修改原数组 //每个方法都需要传递回调函数callback,回调函数的参数有三个: // item:当前项 // index:当前项的索引位置 // array:数组本身 //every:对于数组的每一个元素进行一个函数的运算,如果每一项都返回true,最终结果返回true; //如果有一个返回false,最终结果返回false var result = arr.every(function(item, index, array) { if(item > 2){ return true; } }) console.info(result); //filter:对于数组的每一个元素进行一个函数的运算,把过滤后的结果返回一个新的数组 var result = arr.filter(function(item, index, array) { if(item > 2){ return true; } }) console.info(result); //forEach:循环数组中每一项的值并执行一个方法,没有返回值 arr.forEach(function(item, index, array) { console.info(item); }) //map:对于数组的每一个元素进行一个函数的运行,可以经过函数执行完毕后把新的结果返回 var result = arr.map(function(item, index, array) { return item * 2; }) console.info(result); //some:对于数组每一个元素进行一个函数的运行,如果有一项返回true最终返回true; //如果每一项都返回false,最终返回false var result = arr.some(function(item, index, array) { return item >= 5; }) console.info(result);
缩小方法:reduce reduceRight
var arr = [1, 2, 3, 4, 5, 4, 3, 2, 1]; //reduce reduceRight //对数组元素值进行计算,返回最后一次计算的值。 //通过回调函数callback把数组中的值运算为一个结果值 //回调函数参数 // pre:前一个值 // current:当前值 // index:索引值 // array:数组本身 var result = arr.reduce(function(prev, current, index, array) { return prev + current; }); console.info(result); var result = arr.reduceRight(function(prev, current, index, array) { return prev + current; }); console.info(result);