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

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

}

其实我整段都不知道该咋理解,求高手给小弟分步骤解答一下,感谢!!


慕婉清6462132
浏览 413回答 1
1回答

慕哥6287543

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去看每一句的实现。当一个值不存在时,初始为1.第二个apple,之前初始为1,现在值变成2了。遇到这种问题,自己打断点最容易理解。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript