一、统计字符串出现的次数
- 统计下列字符串每个字符出现的频率
js
var str = 'adadasdasdsada';
题解:
大众写法
jsvar str = 'adadasdasdsada'; var result = {}; for(var i = 0; i < str.length; i++) { if (result[str[i]]) { result[str[i]]++; } else { result[str[i]] = 1 } } console.log(result)
采用
reduce
函数reduce
:凡是遍历需要累计的东西都可以使用reduce
- 最初版js
var str = 'adadasdasdsada'; var result = str.split('').reduce(function(a, b) { if (a[b]) { a[b]++; } else { a[b] = 1; } return a; }, {}) console.log(result)
- 改造
if
jsvar str = 'adadasdasdsada'; var result = str.split('').reduce(function(a, b) { if (!a[b]++) { a[b] = 1; } return a; }, {}) console.log(result)
- 去掉
if
jsvar str = 'adadasdasdsada'; var result = str.split('').reduce(function(a, b) { a[b]++ || (a[b] = 1); return a; }, {}) console.log(result)
- 再简化,使用括号运算符,
括号运算法
里面可以写任意东西,一定会返回最后一个,前面全部运算一遍jsvar str = 'adadasdasdsada'; var result = str.split('').reduce(function(a, b) { return (a[b]++ || (a[b] = 1), a); }, {}) console.log(result)
- 既然是一条语句,就可以使用箭头函数js
var str = 'adadasdasdsada'; var result = str.split('').reduce((a, b) => (a[b]++ || (a[b] = 1), a), {}) console.log(result)