遍历数组中的每一项,为每个元素调用制定的函数
是es5 的方法 (IE9 以下不可用)可替代 for 循环,但是 forEach 不能中断循环(不能使用break 或者 return 语句)这里简单提一下 for in 和 for of
for of 是es6方法 可以代替 forEach方法 let obj1 = ['judy', 'nick'] for (let key in obj1) { console.log(key) // 0 1 } let obj = {name: 'judy', age: 18} for (let key in obj) { console.log(key) // name age } let obj = ['judy', 'nick'] for (let value of obj) { console.log(value) // judy nick } for of 不能用在普通的对象上,可以使用Object.keys() 按照对象所拥有的属性进行 let obj = {name: 'judy', age: 18} for (var key of Object.keys(obj)) { console.log(key + ": " + obj[key]); // name: judy age: 18 }重点区别一下 map filter reduce
遍历数组里的每一项,得到一个新的数组, 新数组长度 = 原长度
let result = [1, 2, 3].map(item => { return item * 2 }) console.log('result2:', result) // [ 2, 4, 6 ]根据某一规则过滤数组中符合要求的项,过滤之后的数组长度 <= 原长度
let result = [1, 2, 3, 4].filter(item => { return item % 2 === 0 }) console.log('result1:', result) // [2, 4]遍历数组中的每一项组合成一个新结果,这个结果可以是任意类型
let num = 1 let result = [1, 2, 3].reduce((total, item) => { return total + item }, num) console.log('result:', result) // 7是数组的逻辑判定
根据指定函数 对数组元素进行判定遍历过程中,判定函数第一次返回true 则停止遍历,返回true;如果一直没有元素返回true,则一直遍历,直到结束,返回false let arr = [1,2,3,4] arr.some(function (item) { return item > 5 }) // false arr.some(function (item) { return item % 2 === 0 }) // true是数组的逻辑判定
根据指定函数 对数组元素进行判定遍历过程中,判定函数第一次返回false 则停止遍历,返回false;如果一直没有元素返回false,则一直遍历,直到结束,返回挥true let arr = [1,2,3,4] arr.every(function (item) { return item < 5 }) // true arr.every(function (item) { return item % 2 === 0 }) // false