侧边栏壁纸
  • 累计撰写 197 篇文章
  • 累计收到 496 条评论

ES6数组遍历复习

2019-11-4 / 0 评论 / 47 阅读

1、for(let i = 0; i < array.length; i++) {}方式

    // 声明一个数组
    array = [1,2,3,4,5]
    // 遍历
    for(let i = 0; i < array.length; i++) {
        console.log(i,array[i])
    }
    // 依次输出
    // 0, 1
    // 1,2
    // 2,3
    // 3,4
    // 4,5

2、forEach遍历方式

foreach.png

    // 这里直接使用上面的数组了
    array.forEach( function (x) {
        console.log(x)
    })
    // 输出1,2,3,4,5
    // 需要值得注意的是forEach不支持break以及continue

3、every遍历方式

使用forEach方式遍历的场景是需要遍历每一个元素,因为forEach不能在执行过程中停止掉

而使用every方式遍历的大部分场景都是用于判定一个元素是否存在这个数组中的时候使用every

下面请看example

everyreturntrue.png

let array = [1,2,3,4,5]
array.every( x => {
    console.log(x)
    return true // 注意这里如果返回true时将继续遍历
})
// 程序结束输出
// 1
// 2
// 3
// 4
// 5
// 下一个example

everyreturnfalse.png

array.every( x => {
    console.log(x)
} )
// 程序结束输出
// 1
// 这里可能有很多同学疑惑我并没有返回false呀,为什么只遍历了一个呢?
// 这里需要说明的是如果没有返回值将默认返回false

4、for...in...

for...in...方法本不属于array,但是却可以用于遍历array。for...in...方法主要用于遍历对象

下面是一个example

forin1.png
let array = [1,2,3,4,5]
for ( i in array ) {
    console.log(i, array[i])
}
// 这里输出的是
// 0,1
// 1,2
// 2,3
// 3,4
// 4,5
这里可能很多同学会问for in 本是给object设计的,那么array使用了就没有什么副作用吗?


我在这里的回答是有的,肯定是有的

for in 给我们带来便利的同时也会遍历到一些array上面的非原型对象

这里打个比方

我一开始new了一个array

后来我直接给这个array对象加上一个属性,同学们想一想这个属性他是可以遍历出来的吗?

我们来看一下

for in2.png



let array = [1,2,3,4,5]
array.a = 'hello wrold'
for ( i in array ) {
    console.log(i , array[i])
}
// 运行结束,程序输出
// lesson2.js:4 1 2
// lesson2.js:4 2 3
// lesson2.js:4 3 4
// lesson2.js:4 4 5
// lesson2.js:4 a hello world
最后数组遍历的方法还有一个for...of...


可能我们大部分人的意识里面可遍历的数据类型只有object、array,但是到了es6之后我们就可以自定义数据结构,只要按照es6标准定义数据结构就可以遍历。但是这样的遍历不可以使用for、 for...in...只时候就要用到for...of...了

评论一下?

OωO
取消