diff --git a/03-JavaScript基础/15-数组的常见方法&数组的遍历.md b/03-JavaScript基础/15-数组的常见方法&数组的遍历.md index 555993c..830f849 100644 --- a/03-JavaScript基础/15-数组的常见方法&数组的遍历.md +++ b/03-JavaScript基础/15-数组的常见方法&数组的遍历.md @@ -34,7 +34,7 @@ | filter()| 对数组中每一项运行回调函数,该函数返回结果是true的项,将组成新的数组,返回结果为**新的数组**。可以起到过滤的作用| 不会改变原数组| | every()| 如果有一项返回false,则停止遍历,此方法返回 false | 一假即假。要求每一项都返回true,最终的结果才返回true | | some()| 只要有一项返回true,则停止遍历,此方法返回true | 一真即真。要求每一项都返回false,最终的结果才返回false| -| reduce | | | +| reduce | 为数组中的每一个元素,依次执行回调函数 | | **数组的其他方法如下**: @@ -528,8 +528,9 @@ PS:这几个方法**不会修改原数组**。 ``` 数组/boolean/无 = 数组.every/filter/forEach/map/some( - function(element,index,arr){ - 程序和返回值; + function(item, index, arr){ + 程序和返回值; + }) ``` 有了这几种方法,就可以替代一些for循环了。下面依次来介绍。 @@ -670,7 +671,6 @@ map的应用场景,主要就是以上两种。 [6,5,6] ``` - 上方代码的ES6写法: ```javascript @@ -704,7 +704,6 @@ map的应用场景,主要就是以上两种。 [{"name":"许嵩","type":"一线"},{"name":"邓紫棋","type":"一线"}] ``` - ### every()方法 `every()`:对数组中每一项运行回调函数,如果都返回true,every就返回true;如果有一项返回false,则停止遍历,此方法返回false。 @@ -737,7 +736,52 @@ map的应用场景,主要就是以上两种。 `some()`:对数组中每一项运行回调函数,只要有一项返回true,则停止遍历,此方法返回true。 -注意:every()方法的返回值是boolean值 +注意:some()方法的返回值是boolean值。 + +### reduce()方法 + +> reduce的发音:[rɪ'djuːs]。中文含义是减少。 + +`reduce()`:为数组中的每一个元素,依次执行回调函数。 + +**语法**: + +```javascript + arr.reduce( + function(previousValue, item, index, arr) { + + }, initialValue) + +``` + +参数解释: + +- previousValue:上一次调用回调函数时的返回值,或者初始值 + +- currentValue:当前正在处理的数组元素 + +- currentIndex:当前正在处理的数组元素下标 + +- array:调用reduce()方法的数组 + +- initialValue:可选的初始值(作为第一次调用回调函数时传给 previousValue 的值) + +备注:如果能熟练使用 reduce 的用法,将能替代很多其他的数组方法。 + + +**举例1**: + +计算数组中所有元素项的总和。代码实现: + +```javascript + var arr = [2, 0, 1, 9, 6]; + sumValue = arr.reduce(function(total, item) { // 计算 arr 数组中,所有元素项的综合 + return total + item; + }, 0); + + console.log('sumValue:' + sumValue); // 打印结果:18 +``` + ## 数组的其他方法