# 章序号/节序号/节/笔记序号 codecademy, Iterators # 概念阐释 ## 语义 - **`forEach()`** 方法对**数组的每个元素**执行一次**给定的函数**。 - 代替的是**loop循环**的写法 - return undefined??? ## 语法 `array1.forEach(element => console.log(element));` ```js **// 内联回调函数 arrayName.forEach(function(element) { /* … */ }) ``` - *正在处理的元素随便任意命名,可以为element;可以为单数数组变量名,更贴近语义。* # 举例子 ![](http://image.harryrou.wiki/2023-03-03-%E6%88%AA%E5%B1%8F2023-03-03%2007.51.29.png) ```js //返回结果 - brown sugar - salt - cranberries - walnuts /*回忆:const groceries = function(item) { return ',,,,,' }*/ ``` ### 箭头写法 ```js groceries.forEach(groceryItem => console.log(groceryItem)); /*回忆:const groceries = item => return ',,,,'*/ ``` ### 先定义函数再回调函数 ```js function printGrocery(element){   console.log(element); } groceries.forEach(printGrocery); /* 回忆 function groceries(item){ return ',,,,,' };*/ ``` # 类比、比较与对比 ### 将for 循环转换为forEach ```js const items = ['item1','item2','item3']; const copyItems =[]; for (let i = 0; i< items.length;i++){ copyItem.push(item[i]); } items.forEach( function(item)=>{ copyItem.push(item); } ); ``` - `.forEach()` 使用的`item`是指数组中正在处理的当前元素 # 问题 用`.forEach` 循环这个数组。用箭头函数和内联函数两种写法写。 ```js const fruits = ['mango', 'papaya', 'pineapple', 'apple']; ``` # 问题答案 ```js // Iterate over fruits below fruits.forEach(function(fruitItem){ console.log(`I want to eat a ${fruitItem}`); }); fruits.forEach((fruitItem) => console.log(`I want to eat a ${fruitItem}`)) ``` # 备注(经验集/错误集) ## 经验集 ## 错误集 当forEach中使用函数时,应传入一个函数,而不是调用函数。[[js DOM 练习题 钢琴键]] ![](http://image.harryrou.wiki/2023-05-22-CleanShot%202023-05-22%20at%2008.13.52%402x.png) ## 参考资料 [Array.prototype.forEach()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)