对于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);