forEach
遍历数组中的每一项,为每个元素调用制定的函数
- 是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
map
遍历数组里的每一项,得到一个新的数组, 新数组长度 = 原长度
let result = [1, 2, 3].map(item => {
return item * 2
})
console.log('result2:', result) // [ 2, 4, 6 ]
复制代码
filter
根据某一规则过滤数组中符合要求的项,过滤之后的数组长度 <= 原长度
let result = [1, 2, 3, 4].filter(item => {
return item % 2 === 0
})
console.log('result1:', result) // [2, 4]
复制代码
reduce
遍历数组中的每一项组合成一个新结果,这个结果可以是任意类型
let num = 1
let result = [1, 2, 3].reduce((total, item) => {
return total + item
}, num)
console.log('result:', result) // 7
复制代码
some
是数组的逻辑判定
- 根据指定函数 对数组元素进行判定
- 遍历过程中,判定函数第一次返回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
复制代码
every
是数组的逻辑判定
- 根据指定函数 对数组元素进行判定
- 遍历过程中,判定函数第一次返回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
复制代码