方法一: 通过for循环的方法统计一个字符串出现次数
-
首先,定义了一个字符串
str
,其值为'abcbdcbdscc'
。 -
创建了一个空对象
obj
,用于存储字符出现次数的统计结果。 -
使用
for
循环遍历字符串str
中的每个字符。在每次循环迭代时,使用charAt
方法获取当前索引i
处的字符,并将其赋值给变量char
。 -
检查对象
obj
中是否已经存在属性char
。如果obj[char]
存在(即obj
中已经有该字符的计数),则将该属性值加一(obj[char]++
)。否则,将属性char
添加到对象obj
中,并将其初始值设置为 1(obj[char] = 1
)。
<script>
let str = 'abcbdcbdscc'
let obj = {}
for(let i = 0; i < str.length; i++) {
let char = str.charAt(i)
if(obj[char]) {
obj[char]++
}else {
obj[char] = 1
}
}
console.log(obj)
</script>
方法二 : 通过reduce方法统计出一个字符串出现次数
-
使用
split('')
方法将字符串str
拆分为字符数组。这将创建一个包含每个字符的数组,例如['a', 'b', 'c', 'b', 'd', 'c', 'b', 'd', 's', 'c', 'c']
。 -
调用数组的
reduce
方法。reduce
方法接受一个回调函数和一个初始值,用于对数组元素进行迭代和累积操作。 -
在回调函数中,使用了三元条件运算符。首先,检查累积值对象
prev
中是否已经存在属性item
(当前迭代的字符)。如果prev[item]
存在,则将其值加一(prev[item]++
)。如果不存在,则将属性item
添加到prev
对象中,并将其初始值设置为 1(prev[item] = 1
)。 -
reduce
方法的初始值为一个空对象{}
,作为累积值prev
的初始状态。 -
循环结束后,
count
对象中存储了字符出现的统计结果。<script> let str = 'abcbdcbdscc' const count = str.split('').reduce((prev,item)=>{ prev[item] ? prev[item]++ : (prev[item] = 1) return prev },{}) console.log(count) </script>
如果小伙伴们想得出最大值字符和出现次数,循环遍历即可得到哦。