在其他博客里面看到了一种方法:
这个方法很简单,但是15-20行代码对于萌新来说,不是很好理解,因此我给出了以下这个方案,先想办法统计出所有字母各出现的次数,然后把这些次数push到一个数组里面,找出最大的那个数(我这里是通过排序找出的最大数),最大数有了,该数对应的字符不就很容易找到吗?下面就是具体代码:
var str = 'abcdeffsasssddw';
function findMax(str){
var arr = str.split('');
var obj = {};
for (var i = 0;i < arr.length - 1; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = 1;
} else {
obj[arr[i]] += 1;
}
}
var numList = [];
var zimu = '';
for(var item in obj){
numList.push(obj[item]);
}
var newList = bubbleSort(numList);
// 计算出最大数字
console.log(newList[newList.length-1]);
for(var k in obj){
if(newList[newList.length-1] === obj[k]){
zimu = k;
}
}
alert(zimu);
}
// 排序
function bubbleSort(arr) {
for (let i = 0, l = arr.length; i < l - 1; i++) {
for (let j = i + 1; j < l; j++) {
if (arr[i] > arr[j]) {
let tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
}
return arr;
}
findMax(str);
代码有点多,但是好理解!