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

关于JS中reduce()的一道问题请教

关于JS中reduce()的一道问题请教

慕婉清6462132 2019-02-26 17:19:05
function countWords(arr) {  return arr.reduce(function(countMap, word) {    countMap[word] = ++countMap[word] || 1 // increment or initialize to 1    return countMap  }, {}) // second argument to reduce initialises countMap to {}}这个函数解决的是一个数组作为参数传入,最终return出来的结果是一个该数组内字符串的出现次数组成的对象,例如:数组:var arr = ['apple','pear','apple'];结果:{    apple: 2,    pear: 1}其实我整段都不知道该咋理解,求高手给小弟分步骤解答一下,感谢!!
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

reduce,简单说是一个累加。第一个参数是一个函数,这个函数中第一个参数是总和,第二个参数是当前遍历的子项。第二个参数为初始值。这里是一个{}。


function countWords(arr) {

  return arr.reduce(function(countMap, word) {

    debugger;

    countMap[word] = ++countMap[word] || 1 // increment or initialize to 1

    return countMap

  }, {}) // second argument to reduce initialises countMap to {}

}

var arr = ['apple','pear','apple'];

countWords(arr)


你需要一个debugger,以及一个浏览器控制台,然后再控制台去运行这段代码。按F10去看每一句的实现。

https://img1.sycdn.imooc.com//5c79f7ed0001ae1a06490297.jpg


当一个值不存在时,初始为1.第二个apple,之前初始为1,现在值变成2了。遇到这种问题,自己打断点最容易理解。


查看完整回答
反对 回复 2019-03-02
  • 1 回答
  • 0 关注
  • 378 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信