统计重复字符
看到一段代码,使用了reduce方法统计字符串中重复单词,现在我简化直接对数组进行操作,说说这么做的原理是什么。
1 | var arr=["a","b","c","b","a"]; |
arr.reduce(callback[, initialValue])
回调函数第一次执行时,
1 | callback(previousValue, currentValue,currentIndex,array) |
回调函数第一次执行时,
如果reduce有initialValue参数,那么 previousValue 等于 initialValue ,并且currentValue 等于数组中的第一个值;
如果reduce没有 initialValue 参数,那么previousValue 等于数组中的第一个值,currentValue等于数组中的第二个值。
再来看上面的那段代码,我试着输出了prev ,它是一个数组,在每一次循环中的结果时这样的
1 | {a: 1} |
next 则为每次循环的 currentValue
所以运行的过程应该是这样的:
reduce参数获得了一个回调函数和一个空的对象作为初始值,在第一次回调时,
prev={} next=”a” prev[“a”]=undefined||1
然后返回prev这个数组,作为下一次的prev。next=”b” prev[“b”]=1 ……如此循环
对字符串的操作
1 | var str="abcscd", |