1. forEach(),为数组中的每个元素执行一次回调函数,方法: array.forEach(function(currentValue,index,arr),thisValue),参数:currentValue——必需,当前元素,index——可选,当前元素的索引值,arr——可选,当前元素所属的数组对象,thisValue——可选,当执行回调寒食时,用作this的值
var arr1 = [3, 7, 4, 9, 0];
arr1.forEach(function (e, i, a) {
console.log(e, i, a)
});
console.log(arr1);
//3 0 [ 3, 7, 4, 9, 0 ]
//7 1 [ 3, 7, 4, 9, 0 ]
//4 2 [ 3, 7, 4, 9, 0 ]
//9 3 [ 3, 7, 4, 9, 0 ]
//0 4 [ 3, 7, 4, 9, 0 ]
// [ 3, 7, 4, 9, 0 ]
2. entries(),返回一个数组迭代器对象,该迭代器包含所有数组元素的键值对(很少用到这个方法,资料不全)
var arr = [3, 6, 'o', 'p', 'hi'];
var arr2 = arr.entries();
console.log(arr2); //{}
console.log(arr2.next()); //{ value: [ 0, 3 ], done: false }
3. every(),测试数组中所有元素都符合指定要求
var arr = [2, 4, 6, 7];
var tag1 = arr.every(function (val) {
return val > 1;
});
var tag2 = arr.every(function (val) {
return val>9
});
console.log(tag1); //true
console.log(tag2); //false
console.log(arr); //[ 2, 4, 6, 7 ]
4. some(),数组中至少有一项符合要求,返回true,否则false
var arr = [1, 5, 8, 3];
var tag1 = arr.some(function (val) {
return val > 7
});
var tag2 = arr.some(function (val) {
return val > 8
});
console.log(tag1); //true
console.log(tag2); //false
console.log(arr); //[ 1, 5, 8, 3 ]
5. filter(),将所有过滤函数中符合要求的元素放进一个新数组
var arr1 = [3, 6, 4, 9, 16];
var arr2 = arr1.filter(function (val) {
return val % 2 === 0;
});
console.log(arr2); //[ 6, 4, 16 ]
console.log(arr1); //[ 3, 6, 4, 9, 16 ]
6. find(),找到第一个符合要求的元素的值,找不到返回undefined
var arr = [5, 3, 2, 8, 6, 4, 5];
var tag1 = arr.find(function (val) {
return val > 7;
});
var tag2 = arr.find(function (val) {
return val > 10;
})
console.log(tag1); //8
console.log(tag2); //undefined
console.log(arr); //[ 5, 3, 2, 8, 6, 4, 5 ]
7. findIndex(),找到第一个符合要求的值,并返回该元素下标,如果没有,返回-1
var arr = [7, 5, 4, 2, 0, 1, 4];
var tag1 = arr.findIndex(function (val) {
return val % 2 === 0;
});
var tag2 = arr.findIndex(function (val) {
return val > 8;
});
console.log(tag1); //2
console.log(tag2); //-1
console.log(arr); //[ 7, 5, 4, 2, 0, 1, 4 ]
8. keys(),返回一个数组迭代器对象,该迭代器会包含所有数组元素的键
var arr = [6, 4, 6, 9, 3];
console.log(arr.keys().next()); //{ value: 0, done: false }
console.log(arr); //[ 6, 4, 6, 9, 3 ]
9. map(),返回一个由回调函数的返回值组成的函数
var arr1 = [5, 3, 8, 9];
var arr2 = arr1.map(function (val) {
return val = val * 2;
});
console.log(arr2); //[ 10, 6, 16, 18 ]
console.log(arr1); //[ 5, 3, 8, 9 ]
10.reduce(),从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值
arr.reduce(function(total,currentValue,currentIndex,arr),initialValue)
参数:total——必需,初始值,或者计算结束后的返回值 currentValue——必需,当前元素 // currentIndex——可选,当前元素的索引 arr——可选,当前数组
var arr1 = [6, 4, 3, 9, 9, 0, 13];
var arr2 = [4, 6, 'h', 8, 'i', 6, 14];
var tag1 = arr1.reduce(function (total, num) {
return total + num
});
var tag2 = arr2.reduce(function (total, num) {
return total + num
});
console.log(tag1); //44
console.log(arr1); //[ 6, 4, 3, 9, 9, 0, 13 ]
console.log(tag2); //10h8i614
console.log(arr2); //[ 4, 6, 'h', 8, 'i', 6, 14 ]
11. reduceRight(),类似reduce,数组遍历从右到左
var arr1 = [6, 4, 3, 9, 9, 0, 13];
var arr2 = [4, 6, 'h', 8, 'i', 6, 14];
var tag1 = arr1.reduceRight(function (total, num) {
return total + num
});
var tag2 = arr2.reduceRight(function (total, num) {
return total + num
});
console.log(tag1); //44
console.log(arr1); //[ 6, 4, 3, 9, 9, 0, 13 ]
console.log(tag2); //20i8h64
console.log(arr2); //[ 4, 6, 'h', 8, 'i', 6, 14 ]