for循环
const arr = [1, 2, 3, 4, 5, 6]
for (let i = 0; i < arr.length; i++) {
console.log(arr[i])
}
forEach
const arr = [1, 2, 3, 4, 5,6]
arr.forEach(element => console.log(element))
forEach优点是书写上比较简洁;缺点是每个元素都必须遍历
every
const arr = [1, 2, 3, 4, 5, 6]
arr.every(element => {
if (element === 3) {
} else {
console.log(element)
}
return true
})
如every示例代码,即此时如果需要对循环进行停止或者跳过的操作,
for循环可以使用break和continue完成操作
every的函数默认返回值是flase,可通过函数的返回值完成操作
forEach对break、continue提示语法不支持。
for…in
const arr = [1, 2, 3]
arr.a = 7
for (const key in arr) {
//(===)既检查值也检查类型
if (key * 1 === 2) {
continue
}
console.log(key, arr[key])
}
// 0 1
// 1 2
// 2 3
// a 7
由以上代码可知,for…in支持break、continue控制元素。但由结果可知通过for…in遍历数组是有瑕疵的。for…in实际是为遍历对象(object)设计的。
tips:
- 之所以for…in能遍历的原因
- 数组也是对象
- 数组是可遍历的
- key索引是字符串,(==)只检查值不检查类型
for…of
不仅支持数组的遍历,还可以遍历对象,支持Map和Set遍历。只要部署了Iterator的数据结构都可以使用 for…of完成遍历操作。