var arr='asfacfagsahvahvxssaaxssxs';
var info = arr
.split('')
.reduce( (p,k) => (p[k]++ || (p[k]=1) ,p ),{});
console.log(info);
三行代码就算出来了? 萌新一脸懵逼
var arr='asfacfagsahvahvxssaaxssxs';
var info = arr
.split('')
.reduce( (p,k) => (p[k]++ || (p[k]=1) ,p ),{});
console.log(info);
三行代码就算出来了? 萌新一脸懵逼
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
关键就是那个
reduce
啦,没啥神奇的。reduce
里面传入了一个空对象,迭代每个字符的时候,把单个字符作为对象的key
一直累加,最后输出这个对象。你可以把它展开,然后单步运行,看看每一步是怎么操作的,这样比较明显,下面就是它展开的样子: