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去看每一句的实现。
当一个值不存在时,初始为1.第二个apple,之前初始为1,现在值变成2了。遇到这种问题,自己打断点最容易理解。
添加回答
举报
0/150
提交
取消