这是一道在面试中出现频率比较高的题目,因为所考到的知识点也比较多.
let str = 'abaasdffggghhjjkkgfddsssss3444343';
我们可以利用js中对象的特性,将每一个字符当成属性都放入到对象中;如果对象中不存在该属性,值就会是undefined。
// 声明一个空对象
let obj = {
}
for(let i=0; i<str.length; i++){
if(obj[str[i]] === undefined){
// 如果str[i]之前在对象中没有,那就直接赋初始值为1
obj[str[i]] = 1;
}else{
// 如果str[i]已经存在于对象中了,就自增
obj[str[i]]++;
}
}
console.log(obj);
执行完以上的操作后,就将字符串中的字符和字符出现的次数都以对象属性/值的方式存入到了obj对象中了,这时只需要判断obj对象属性值中最大即可。
// 为了确保初始值是绝对的比每一个需要比较的值都小
let max = -Infinity;
let maxNum = null;
for(let key in obj){
if(max < obj[key]){
max = obj[key];
maxNum = key;
}
}
console.log('字符串中出现次数最多的字符是:',maxNum,'出现最多的字符是:',max);
完整代码:
let str = 'abaasdffggghhjjkkgfddsssss3444343';
// 声明一个空对象
let obj = {
}
for(let i=0; i<str.length; i++){
if(obj[str[i]] === undefined){
// 如果str[i]之前在对象中没有,那就直接赋初始值为1
obj[str[i]] = 1;
}else{
// 如果str[i]已经存在于对象中了,就自增
obj[str[i]]++;
}
}
console.log(obj);
// 为了确保初始值是绝对的比每一个需要比较的值都小
let max = -Infinity;
let maxNum = null;
for(let key in obj){
if(max < obj[key]){
max = obj[key];
maxNum = key;
}
}
console.log('字符串中出现次数最多的字符是:',maxNum,'出现最多的字符是:',max);
以上就是本文中全部的内容了,希望对童鞋们有点帮助,也欢迎大家留言和我交流。