forEach
第一个我们来说一下最常见的快被我们用烂了的forEach()
let arr = ['l', 'x', 'k'];
arr.forEach(item => {
console.log(item);
})
对于forEach()方法本身是不支持continue和break语句的,使用break不能中断循环 ,return不能返回到外层函数。
let arr = ['l', 'x', 'k'];
arr.forEach(item => {
if (item === 's') break;
console.log(item);
})
使用break会报错,非法语句。
map
map()方法定义在js的Array中,他返回的是一个新的数组,数组中的元素为原始数组调用函数处理后的值。
//给数组的每一个元素加1,组成新数组
var arr = [1,2,3,4,5,6,7];
var newarr=arr.map(function (num) {
return num+1;
})
filter
filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
//输出大于5的数,组成新数组
var arr = [1,2,3,4,5,6,7];
var newarr = arr.filter(function(num){
reture num>5?num:''
});
some
some()方法用于检测数组中的元素是否满足指定条件。some()方法会执行数组的每一个元素,如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测。入股没有满足条件的元素,则返回false。
let arr = ['l', 'x', 'k'];
let arr2 = arr.some(item => item === 'l')
console.log(arr2);
every
every()方法用于检测数组所有元素是否都符合指定条件。every()方法使用指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测。如果所有的元素都满足条件,则返回true。
let arr = ['l', 'x', 'k'];
let arr2 = arr.every(item => item === 's')
console.log(arr2);
reduce
reduce()方法接受一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
arr.reduce((prev,cur,index,arr)=>{
},init)
//arr:表示将要作用的原数组
//prev:表示上一次调用回调时的返回值,或者初始值init
//cur:表示正在处理的数组匀速的索引
//若提供init值 ,则索引为0,否则为1.
//init:表示初始值
我们经常用来数组求和:
const arr = [1,2,3,4,5,6,7]
const sum = arr.reduce((pre,cur)=>{
return pre +cur
})
console.log(sum)//28
const arr = [1,2,3,4,5,6,7]
const sum = arr.reduce((pre,cur)=>{
return pre +cur
},2)
console.log(sum)//30
for…in 和for…of
重点来了!!!
我们经常用到for in和for of,但是他们两个有什么区别呢?
- 循环数组
区别:for in和for of都可以循环数组,for in输出的是数组的下标,而for of输出的是数组的每一项的值。
const arr = [1,2,3,4]
// for ... in
for (const key in arr){
console.log(key) // 输出 0,1,2,3
}
// for ... of
for (const key of arr){
console.log(key) // 输出 1,2,3,4
}
2.循环对象
区别:for in 可以遍历对象,for of 不能遍历对象,只能遍历带有iterator接口的,例如Set,Map,String,Array。
const object = { name: 'lxk', age: 18 }
// for ... in
for (const key in object) {
console.log(key) // 输出 name,age
console.log(object[key]) // 输出 lx,23
}
// for ... of
for (const key of object) {
console.log(key) // 报错 Uncaught TypeError: object is not iterable
}
所以我们可以看出来,for in就是专门用来遍历对象的,for of可以用来遍历数组、字符串、数组对象、map、set等拥有迭代器的集合,但是不能遍历对象,因为对象没有迭代器。