Skip to content

Commit 2cad3d9

Browse files
committed
Complete array method.
1 parent 7db1942 commit 2cad3d9

File tree

1 file changed

+70
-1
lines changed

1 file changed

+70
-1
lines changed

article/005-reference-object-array.md

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,19 +511,88 @@ console.log(filterResult) // [ 3, 4, 5, 4, 3 ]
511511

512512
```
513513

514-
以上示例演示了:every、some、filter 三个方法的使用,这三个方法主要通过给定函数判断数组每一项是否符合我们的条件
514+
以上示例演示了:every、some、filter 三个方法的使用,这三个方法主要通过接收 "给定函数" 来判断数组每一项元素是否 “给定函数”,如果符合就返回相应的结果。
515515

516+
```javascript
517+
var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]
518+
519+
/**
520+
* map 按照特定逻辑运算每一项元素,并将每一项运算之后的结果组成数组返回。
521+
* @type {Array}
522+
*/
523+
var mapResult = numbers.map(function (item, index, array) {
524+
return item * 2;
525+
});
526+
console.log(mapResult); // [ 2, 4, 6, 8, 10, 8, 6, 4, 2 ]
527+
528+
/**
529+
* 本质与 for 循环相同
530+
*/
531+
numbers.forEach(function (item, index, array) {
532+
return item * 2;
533+
});
534+
535+
```
536+
537+
**迭代方法总结:每个函数都接受一个”给定函数“,用于对数组每一个元素执行运算。”给定函数“ 接收参数都是三个:每一项的值、该项在数组的下标、数组对象本身。**
538+
539+
有了这些迭代方法,我们就可以灵活的处理数组的各种情况。
540+
541+
### 2.11、缩小方法
516542

543+
- reduce(): 从数组第一项开始,逐个遍历到最后。
544+
- reduceRight(): 从数组的最后一项开始,向前遍历到第一项。
517545

546+
__上面两个方法都接收两个参数:__
518547

548+
1. callback: 在数组每一项上调用的函数,包含四个参数:
549+
1. accumulator:前一个值(累加器累加回调的返回值;它是上一次调用回调时返回的累积值,或 `initialValue`
550+
2. currentValue:当前值
551+
3. currentIndex:(可选)元素的下标
552+
4. array:(可选)数组对象
553+
2. initialValue:(可选)作为缩小基础的初始值。
519554

555+
__返回值:__
520556

557+
1. 函数累计处理的结果
521558

522559

560+
**⚠️:如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue,从索引0开始。**
561+
562+
563+
```javascript
564+
565+
var values = [1, 2, 3, 4, 5];
566+
567+
/**
568+
* 数组每一项调用的函数
569+
* @param prev 前一个值
570+
* @param current 当前值
571+
* @param index 元素下标
572+
* @param array 数组对象
573+
* @return {*} 返回结果
574+
*/
575+
var calcFunc = function (prev, current, index, array) {
576+
return prev + current;
577+
}
578+
579+
var sum = values.reduce(calcFunc);
580+
console.log(sum); // 15
581+
582+
```
583+
584+
使用场景:(大家可以思考下以下场景使用 reduce 如何实现)
523585

586+
1. 计算数组里所有值的和
587+
2. 将二维数组转换为一维数组
588+
3. 计算数组中每个元素出现的次数
589+
4. 数组去重
524590

591+
reduceRight 与 reduce 计算原理完全相同仅仅是顺序相反。
525592

593+
### Array总结
526594

595+
以上就是Array的所有方法整理,希望会对大家的理解有所帮助。
527596

528597

529598

0 commit comments

Comments
 (0)