js 统计某段字符出现的频率
const str = 'adgdfakicjiwoefnoinfoienqoinfwq'
方式一: 传统循环
let result = {}
for (let i = 0; i < str.length; i++) {
if (result[str[i]]) result[str[i]]++
else result[str[i]] = 1
}
console.log(result)
方式二:reduce
let result = str.split('').reduce(function (a, b) {
if (a[b]) {
a[b]++
} else {
a[b] = 1
}
return a
}, {})
console.log(result)
优化 reduce
// 优化一:
let result = str.split('').reduce(function (a, b) {
// 如果没有值就是 undefined
// undefined++ 就是NaN
if (!a[b]++) {
a[b] = 1
}
return a
}, {})
// 优化二:
let result = str.split('').reduce(function (a, b) {
a[b]++ || (a[b] = 1)
return a
}, {})
// 优化三:
// 直接括号运算符
let result = str.split('').reduce(function (a, b) {
return (a[b]++ || (a[b] = 1), a)
}, {})
// 优化四:
// 直接箭头函数
let result = str.split('').reduce((a, b) => (a[b]++ || (a[b] = 1), a), {})
console.log(result)