一、常规for遍历数组
let arr = [1,2,3]
for (let i = 0; i < arr.length; i++) {
console.log(arr[i])
}
总结:
1.for
循环是最一般最常用的循环方法,建立在for
关键字的基础上实现编程的循环;
2.可以用来遍历数组、字符串。
二、forEach、map方法
1.forEach方法
let arr = [1,2,3]
arr.forEach((item, index) => {
console.log(item)
})
forEach()
方法是个人偏爱的方法了,当然可以不用箭头函数:
let arr = [1,2,3]
arr.forEach(function(item, index) {
console.log(item)
})
第一个item
参数是数组的元素,第二个index
参数可以省略,箭头函数只有一个参数时可以省略参数的括号,看个人需求:
let arr = [1,2,3]
arr.forEach(item=> {
console.log(item)
})
需要注意的是,forEach()
方法不提供返回值,默认是undefined
,这与map()
等方法不同。
当你需要操作原数组时,请带上index
参数,直接修改原数组:
let arr = [1,2,3]
arr.forEach((item, index) => {
arr[index] = item + 1
})
总结:
a.forEach()
使用起来简洁得多,不用创建循环变量;
b.配合箭头函数,更是加快开发速度(相对for
循环的而言);
c.可以遍历数组、字符串。
2.map方法
map()
方法参数与其一致,但map()
方法会创建新数组,并在结果返回:
// forEach
let arr = [1,2,3]
let params = arr.forEach((item, index) => {
console.log(item)
return item + 10 //注意,这个返回return是没用的,是为了跟map对比
})
console.log(params) // undefined
// map
let newArr = arr.map((item, index) => {
console.log(item)
return item + 10 //这个return就是需要的咯,不然map原数组干嘛
})
console.log(newArr ) // [11, 12, 13] 返回一个新的数组
总结:
map()
方法一般用在你需要遍历并得到新数组的情况。
三、some、every方法
1.some方法
some()
方法是对数组中所有项运行给定函数,如果该函数的任一项执行函数后返回true
,则最终返回true
,否则返回false
:
let arr = [1,2,3]
// 用result变量接收返回结果
let result = arr.some(item => {
return item > 2
)
console.log(result) // true
在上面的代码中,判断了数组arr
是否存在大于2的元素,并将结果以布尔值的形式返回到result
。
2.every方法
every()
方法是对数组中所有项运行给定函数,如果该函数的每一项执行函数后都返回true
,则最终返回true
,否则返回false
:
let arr = [1,2,3]
// 用result变量接收返回结果
let result = arr.every(item => {
return item > 2
)
console.log(result) // false
在上面的代码中,判断了数组arr
所有元素是否都大于2,并将结果以布尔值的形式返回到result
。
四、for…in… 、for…of…方法
1.for…in…方法
for...in...
方法个人通常用来遍历对象,用法简单,参考如下即可:
let obj = {
id: 1,
name: 'Bob'
}
for (let k in obj) {
console.log(obj[k])
}
总结:
a.需要注意的是:变量 k 为 key
,是键名而不是键值;
b.for...in...
方法除了可以遍历对象,当然也可以遍历数组、字符串,变量index也只是索引、下标:
let arr = [1,2,3]
for (let index in array) {
console.log(array[index])
}
c.for...in...
语句遍历对象时,对于每个不同的属性都会被执行,故而分配的是属性名(键名),迭代的顺序时依赖于执行环境,所以遍历数组不一定按次序访问数组元素,需要按顺序请使用for
循环、forEach()
方法或for...of...
语句。
2.for…of…方法
for...of...
是ES6新增的循环遍历数组的方法,使用很简单:
for (let item of array) {
console.log(item)
}
有点像for...in...
,但需要注意for...of...
和forEach()
一样直接得到item
而不是index
,所以不能对对象使用。