一、利用普通方式实现
//JavaScript输出一个字符串中出现次数最多的字符 function strMax(str) { var obj = {}; //保存每个字符出现的次数( key:字符,value:出现的次数 ) var returnValue = {}; //返回值:最大字符和出现次数 var values = []; //保存每个字符出现的次数 if (typeof str !== 'string') { //如果传入的参数不是字符串,返回""; return ""; } for (var i = 0; i < str.length; i++) { //循环每个字符串里的每个字符 var value = str[i]; if (!obj[value]) { //如果当前obj对象里没有这个字符属性 obj[value] = 1; //添加这个属性,并为这个属性赋值为1 } else { obj[value]++; //如果当前obj对象里存在这个字符属性,则value值+1 } } for (var item in obj) { //遍历添加字符属性后的对象属性 values.push(obj[item]); //把字符出现的字数加入数组 } values.sort(function(value1, value2) { //从大到小排序数组 if (value1 < value2) { return 1; } else if (value1 > value2) { return -1; } else { return 0; } }); var maxNum = values[0]; //获取数组第一个value值 如:5 for (var item in obj) { //重新遍历对象属性 if (obj[item] === maxNum) { //如果对象属性的值等于maxNum var maxValue = item; //获取属性赋值给maxValue } } if (!returnValue[maxValue]) { //如果returnValue对象没有maxValue属性 returnValue[maxValue] = maxNum; //则添加,并赋值maxNum。 } return returnValue; //返回returnValue对象 };
这个JavaScript函数没有做到如果出现的次数相同的字符,就全部输出。只实现了单个输出。
二、利用正则表达式来实现
//使用正则表达式判断 function strMax1( str ){ var maxShow = {count:0,value:""}; //保存最大字符出现的次数( key:字符,value:出现的次数 ) var regs,tempStr,tempCount; //正则匹配,临时最大字符,临时最大字符出现次数 for (var i = 0;imaxShow.count ){ //如果当前获取的字符串长度大于已经保存的字符串长度,则替换。 maxShow.count = tempCount; maxShow.value = str[i]; } } } return maxShow; };