| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -511,19 +511,88 @@ console.log(filterResult) // [ 3, 4, 5, 4, 3 ] | |||
| 511 | 511 | ||
| 512 | 512 | ``` | |
| 513 | 513 | ||
| 514 | - 以上示例演示了:every、some、filter 三个方法的使用,这三个方法主要通过给定函数判断数组每一项是否符合我们的条件 | ||
| 514 | + 以上示例演示了:every、some、filter 三个方法的使用,这三个方法主要通过接收 "给定函数" 来判断数组每一项元素是否 “给定函数”,如果符合就返回相应的结果。 | ||
| 515 | 515 | ||
| 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、缩小方法 | ||
| 516 | 542 | ||
| 543 | + - reduce(): 从数组第一项开始,逐个遍历到最后。 | ||
| 544 | + - reduceRight(): 从数组的最后一项开始,向前遍历到第一项。 | ||
| 517 | 545 | ||
| 546 | + __上面两个方法都接收两个参数:__ | ||
| 518 | 547 | ||
| 548 | + 1. callback: 在数组每一项上调用的函数,包含四个参数: | ||
| 549 | + 1. accumulator:前一个值(累加器累加回调的返回值;它是上一次调用回调时返回的累积值,或 `initialValue`) | ||
| 550 | + 2. currentValue:当前值 | ||
| 551 | + 3. currentIndex:(可选)元素的下标 | ||
| 552 | + 4. array:(可选)数组对象 | ||
| 553 | + 2. initialValue:(可选)作为缩小基础的初始值。 | ||
| 519 | 554 | ||
| 555 | + __返回值:__ | ||
| 520 | 556 | ||
| 557 | + 1. 函数累计处理的结果 | ||
| 521 | 558 | ||
| 522 | 559 | ||
| 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 如何实现) | ||
| 523 | 585 | ||
| 586 | + 1. 计算数组里所有值的和 | ||
| 587 | + 2. 将二维数组转换为一维数组 | ||
| 588 | + 3. 计算数组中每个元素出现的次数 | ||
| 589 | + 4. 数组去重 | ||
| 524 | 590 | ||
| 591 | + reduceRight 与 reduce 计算原理完全相同仅仅是顺序相反。 | ||
| 525 | 592 | ||
| 593 | + ### Array总结 | ||
| 526 | 594 | ||
| 595 | + 以上就是Array的所有方法整理,希望会对大家的理解有所帮助。 | ||
| 527 | 596 | ||
| 528 | 597 | ||
| 529 | 598 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments