首先看到这个题目,我会想到遍历这组字符串,然后存到一个地方,最后比较,输出打印,一个大体思路
然后我会想到谁来存这组数据,在许多数据类型中,数组,字符串,对象等等,无疑最适合的还是对象,然后我会建一个对象,
但是建造一个对象来存储的话,怎么进行比较呢,然后我会想到,来存储遍历下的数据,最后对象遍历的结果进行一下比较,然后就可以得到这个值了。
那么好,代码如下所示。
var str = 'abcdabcdacbdcdcdabcahjdksauesdfjhsfdsufhdjs'
// 求这个字符串出现最多的字母
var obj = new Object ()
// 创建一个对象,来存储上面的字符串出现的次数以及名字
for (var i = 0 ; i < str.length ; i++) {
// 利用for循环来遍历这个字符串
var a = str.charAt(i)
// 用一个变量名来存储字符串中每个字母的名字用来给对象添加
if (obj[a]) {
// 如果obj这个对象有这个值就执行这串带代码,没有就执行else下面的代码
obj[a]++
// 如果有这个值就执行递增,
} else {
obj[a] = 1
// 若果没有就进行赋值操作让他等于1
}
}
var max = 0
// 声明一个变量赋值为0来让他存储出现次数最多的数
var result = ''
for (var k in obj) {
//遍历这个obj这个对象 ,for in 循环中的k代表对象的值,obj[k]代表k这个名字下的值 ,不可以加引号,因为k是个变量
if (max < obj[k]) {
//if判断他是否大于max这个变量值
max =obj[k]
//如果大于那么就给max重新赋值为obj[k]
result = k
// 并且把k赋值到result中
}
}
console.log(obj)
//打印obj这个对象
console.log (max)
//打印max的数值
console.log (result)
//打印result结果,就是str字符串出现最多的字母
首先,我们做这种要求的代码的时候,首先要有一个大逻辑,然后在划分下面的小逻辑,最后一步一步实现就好,我建议大家在完成一个要求的时候完成一步就打印一下,保证代码的正确性再写。