数组遍历的方法以及优势和缺点

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循环可以使用breakcontinue完成操作
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能遍历的原因
  1. 数组也是对象
  2. 数组是可遍历的
  • key索引是字符串,(==)只检查值不检查类型
for…of

不仅支持数组的遍历,还可以遍历对象,支持Map和Set遍历。只要部署了Iterator的数据结构都可以使用 for…of完成遍历操作。

猜你喜欢

转载自blog.csdn.net/xicc1112/article/details/104536995
今日推荐