为了账号安全,请及时绑定邮箱和手机立即绑定

刘老师你好

liu老师和学友你们好, 请问一下:本章节里的 reduce 函数 是 第一次介绍吗 还是在以前的章节里有介绍,如果 以前的章节里有介绍过 请问是那一章节?  若果没有介绍》 本章节的reduce 没有听懂 请详细  讲解一下   谢谢

正在回答

3 回答

reduce是三大面向函数编程函数之一,其他两个是map(转换信息)和filer(过滤信息)

num.reduce函数中有两个参数(initialResult : Result , nextPartialResult : (Result , xxx) throws -> Result)

可以看到第一个参数是用来做初始值的,第二个参数是要求传入的是一个函数或闭包(其中的参数一个是Result即reduce里面的第一个参数,第二个值是你数组里面的值(xxx是指这个值的类型))

可以看出 这个reduce函数通过把你传入的初始值放进你传入的函数或闭包进行多次逻辑操作,返回的值是reduce里面的第一个参数。 有点像  let a = 0 ; a += 1 ; a进去跟1进行操作,结果重新赋值给a

假设有个数组[1,2,3,4] 你.reduce(0, { return $0+$1 }) 结果是 10 . 这里的$0是指闭包里面第一个参数, $1是第二个参数 , 这里进行的操作是 0+1->1(result) 1+2->3(result) 3+3->6(result) 6+4->10(result)进行了四次操作,因为数组里面有四个元素,他们要依次跟$0进行操作。

当然不止上面这种累加操作啦 你也可以做累减reduce(10 , {return $0-$1}) 结果是0

老师那种就是取出最大值,他把reduce里面的第一个参数变成num[0],不再是自己放个默认进去与数组进行操作

逻辑就是 num[0] 对比 num[0] num[0] 对比 num[1] num[0] 对比 num[2] 其中的对比如果左边比右边小,就把右边值赋给左边 相信不难实现吧 希望这个解释能看懂?


0 回复 有任何疑惑可以回复我~

没看懂你的答复,太粗略。 我是问  reduce 函数的  讲解 你说数组和闭包 不知所言, 不过还是谢谢, 下次回答请 纤细解答 多谢

0 回复 有任何疑惑可以回复我~

以前介绍过,你可以查看一下第一季或者第二节,专门讲数组的那一节,这是对数组的处理,闭包那部分自己去找

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

刘老师你好

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信