目标参数若是字符串,可通过split()方法转换为数组
var str="qwertyuiopasdfghjklzxcvbnmqazwsxaswazaaa";
var arr=str.split(""); // 转换为数组
1、
function moreLetter(arr) {
if (!arr) return false;
if (arr.length === 1) return 1;
let result = {}
// 先循环数组,把元素作为key值,元素出现的次数为value值,塞进result对象中
for(let i = 0; i < arr.length;i++) {
if (!result[arr[i]]) {
result[arr[i]] = 1
} else {
result[arr[i]]++
}
}
let keys = Object.keys(result)
let maxNum = 0,
maxVal = '';
// 循环对象,取出value值最大的对应的key值
for(let i = 0; i < keys.length;i++) {
if (result[keys[i]] > maxNum) {
maxNum = result[keys[i]];
maxVal = keys[i]
}
}
return maxVal+','+maxNum;
}
console.log(moreLetter(arr)); // a,7
2、把第一个方法中循环数组塞进对象的操作用三元表达式判断,合并为一个for循环
function moreValue(arr) {
if (!arr) return false;
if (arr.length === 1) return 1;
let res = {}
let maxNum = 0;
let maxValue = null;
for(let i = 0; i < arr.length;i++) {
let val = arr[i]
res[val] === undefined ? res[val] = 1 : res[val]++;
if(res[val] > maxNum) {
maxNum = res[val];
maxValue = val
}
}
return maxValue +','+ maxNum;
}
console.log(moreValue(arr)); // a,7
=======后补=======
3、使用for in 方法获取对象res中的最大值
function moreLetter(str) {
let arr = str.split(""); // 转换为数组
if (!arr) return false;
if (arr.length === 1) return 1;
let res = {};
arr.forEach((item, index) => {
if (!res[item]) {
res[item] = 1;
} else {
res[item]++;
}
});
let maxNum = 0,
maxVal = "";
for (let i in res) {
if (res[i] > maxNum) {
maxNum = res[i];
maxVal = i;
}
}
return maxVal+','+ maxNum;
}
console.log(moreLetter(str));