s

reduce 方法

Array.reduce((pre,cur,index, array)=>{

MDN 上对于这个方法的特殊情况做了详细的阐述,但是一般下意识都不去看,老师一般也都没讲。

S1:如果 initVal,传递了, 那么 pre === initValue, cur === array[0];

S2:如果没有传递initVal,那么 pre === array[0], cur === array[1];

S3: 如果数组仅有一个元素,那么 reduce将直接返回数组中仅有的元素。回调不会执行。

S4:如果空数组,但是 传递了 initVal,那么直接返回这个 initVal,回调也不会执行。

$5:空数组,并且initVal 也没有提供,那么 执行 [].reduce(Math.pow) 会抛出类型异常的错误。

}, initVal);

 

根据上面这个规则可以知道:  

// Math.pow(m, n) 用于 幂运算。  等于求 m的 n次方。

[3,2,1].reduce(Math.pow), 于是这里 pre 和 cur 就会被传入, 所以第一次  3的2次方 == 9 =》 pre, 第二次 9的一次方 = 9,最终返回9.

 

[3].reduce(Math.pow) ===> 3

[].reduce(Math.pow, 3) ===> 3

posted @ 2022-07-07 15:04  努力不搬砖的iori  阅读(123)  评论(0编辑  收藏  举报