JavaScript求出字符串中出现次数最多的字符和出现次数

这是一道在面试中出现频率比较高的题目,因为所考到的知识点也比较多.

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);

以上就是本文中全部的内容了,希望对童鞋们有点帮助,也欢迎大家留言和我交流。

猜你喜欢

转载自blog.csdn.net/cautionHua/article/details/114212595