JavaScript教程:数组扩展方法-forEach()、map()、filter()、reduce()、some()、every() 作者:马育民 • 2022-05-26 20:57 • 阅读:10055 # Array.forEach() **提示:**相当于 `for` 循环数组 将原数组的每一项元素,传入 **回调函数** **forEach() 返回值:**无返回值 #### 回调函数 **参数:** - value:当前元素 - index:当前索引 - array:数组本身 **返回值:**无 ### 例子 ``` var number = ["1", "31", "311", "43", "23"]; var txt = ""; number.forEach(myFunction); console.log(txt) function myFunction(value, index, array) { txt = txt + value + ""; } ``` # Array.map() 将原数组的每一项元素按照规则进行改变,将所有改变的结果组合成一个新数组 **解释:** 将原数组的每一项元素,传入 **回调函数** ,将 **回调函数** 的 **返回值** 组合成一个 **新数组** - 不会更改原始数组 **map() 返回值:**新数组 [](https://www.malaoshi.top/upload/pic/scala/Snipaste_2021-06-16_21-58-15.png) #### 回调函数 **参数:** - value:当前元素 - index:当前索引 - array:数组本身 **返回值:**必须有返回值,将 **返回值** 组合成一个 **新数组** ### 例子 ``` var numbers1 = [45, 4, 9, 16, 25]; var numbers2 = numbers1.map(myFunction); console.log(numbers2); function myFunction(value, index, array) { return value * 4; } ``` # Array.filter() 过滤数组,把符合规则的元素组合成一个新数组 **解释:** 将原数组的每一项元素,传入 **回调函数** ,如果 **回调函数** 返回 `true` ,将该元素放到新数组中(表示符合条件) - 不改变原数组 **filter() 返回值:**过滤出来的新数组 #### 回调函数 **参数:** - value:当前元素 - index:当前索引 - array:数组本身 **返回值:** `true` 或 `false` ### 例子 ``` var numbers = [45, 4, 9, 16, 25]; var over18 = numbers.filter(myFunction); function myFunction(value, index, array) { return value > 18; } console.log(over18); ``` # Array.reduce() 详见: https://www.malaoshi.top/show_1IX7TnITT5iK.html # Array.some() 遍历数组,判断元素是否符合判断条件,若 **有一个** 符合就返回 `true`,若都不符合则返回 `false`,匿名函数的返回值就是判断条件 **解释** - 每次遍历都会执行一次匿名函数,如果有一个匿名函数的返回值为 `true`,即有一个符合条件,那么 some()会返回 `true` - 若都为 false,才会返回 false - 不改变原数组 **some() 返回值:**布尔值 `true` 或 `false` #### 匿名函数 **参数:** - item:每一项元素 **返回值:**布尔值 `true` 或 `false` ### 例子 李雷的各科成绩,如果有一科超过90,就有单科优秀奖 ``` const scoreArr = [77,58,88,92] const res = scoreArr.some( item => item >= 90) if(res){ console.log("有奖励") }else{ console.log("没奖励") } ``` # Array.every() 遍历数组,判断元素是否符合判断条件,如果 **都符合** 则返回 `true`,否则返回 `false`,匿名函数的返回值就是判断条件 **解释** - 每次遍历都会执行一次匿名函数,如果所有匿名函数的返回值都为true,也就是所有元素都符合判断条件,那么 every()会返回 true - 只要有一个为 `false`,即只要有一个不符合,就会返回 `false` - 不改变原数组 **every() 返回值:**布尔值 `true` 或 `false` #### 匿名函数 **函数:** - item:每一项元素 **返回值:**布尔值 `true` 或 `false` ### 例子 李雷的各科成绩,都超过90,就获得奖学金 ``` const scoreArr = [77,58,88,92] const res = scoreArr.every( item => item >= 90) if(res){ console.log("有奖学金") }else{ console.log("没奖学金") } ``` 参考: https://blog.csdn.net/qq_43968060/article/details/114392313 https://segmentfault.com/a/1190000022647129 原文出处:http://malaoshi.top/show_1IX3Np9wqkZe.html