数组迭代之forEach的使用

99 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

数组迭代之forEach

数组迭代之forEach的使用

前言

不知道大伙在学习数组API的时候有没有把它搞混呢?小编在刚开始学的时候老是搞混这个,今天就来和它battle一下,直接把它拿下

一、forEach有什么做用呢?

MDN中是这样解释的: forEach() 方法对数组的每个元素执行一次给定的函数。

那么我们就来看一下它到底是怎么使用滴

1、使用

array.forEach( function ( currentValue [, index [, array ] ] ) [ , thisArg ] ) { //函数体 }

function为传入的回调函数,可传入四个参数:

  • currentValue:当前的数组元素 必须传入的参数!
  • index:当前元素在数组中的索引 (可以省略)
  • array:原数组,即调用forEach的那个数组(可以省略)
  • thisArg :当执行回调函数 function 时,用作 this 的值。(可以省略)

forEach() 为每个数组元素执行一次 callback 函数;与 map() 或者 reduce() 不同的是,它总是返回 undefined 值,并且不可链式调用 forEach() 被调用时,不会改变原数组,也就是调用它的数组(尽管 callback 函数在被调用时可能会改变原数组)。

代码示例:

数组扁平化(这里只拍平一层)

function flatten(arr) {
    if (!Array.isArray(arr)) return arr
    let res = []
    arr.forEach(item => {  //这里只传递一个参数
        if (Array.isArray(item)) {
            res = res.concat(item)
        } else {
            res.push(item)
        }
    })
    return res
}

总结

例如:时间关系就先写到这,后续还会更新数组的其他API,欢迎大家一起交流共同进步!本文仅仅简单介绍了forEach的使用,:更详细的了解可以参考MDN文档(可以点一点我!)