You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constarray=[11,22,33]constreducer=(arr,fn,initValue)=>{if(!Array.isArray(arr))thrownewError('First Argument Must Be Array')if(typeoffn!=='function')thrownewError('Second Argument Must Be Function');vari=initValue ? 0 : 1// 因为如果不存在initValue, 数组第一个就得补上,所以索引从1开始。和下面的赋值操作的顺序不可以对调!initValue=initValue ? initValue : arr[0]//因为存在init的话,第一个就是init, 不存在,第一个就是数组的第一个元素for(i;i<arr.length;i++){initValue=fn(initValue,arr[i],i,arr)}returninitValue}reducer(array,(sum,i)=>sum+i)
The text was updated successfully, but these errors were encountered:
今天无意间看到一个面试题有问到如何实现一个
reduce
函数,额,花了点时间算是写下来了。写这个方法的前提是了解这个api。这个就是对应的
reduce
的第二个参数。reduce
的第一个参数(函数)的第一个参数,(函数)的第二个参数是数组的第一个参数;reduce
函数的第一个参数(函数)的第一个参数是数组的第一个元素,(函数)的第二个参数就是数组的第二个元素。所以,
reduce
函数的第一个参数(函数)的第三个参数(索引), 就是根据reduce
函数的第二个参数在数组中的牵引做的判断。好了,我们知道了这个
reduce
函数的api
之后,我们尝试来写个:The text was updated successfully, but these errors were encountered: