写一个方法,传入字符串并获取出现次数最多的字符,转为对象
2020-04-27 本文已影响0人
callPromise
最近面试碰到一道题,写一个方法,传入字符串str="aabccde",取出现次数最多的一个或多个字符,返回一个对象{a:2,c:2},直接上代码:
/**
* 判断字符串中出现次数最多的字符,并返回对象
* @param str 获取的字符串
* @returns {Object} 转化后的对象objVal
*/
function str2Obj(str){
let maxVal = 0;
let objVal = {}; //最终返回的对象
let obj = (str.split('') || []).reduce((pre, cur) => {
if (pre.hasOwnProperty(cur)) {
pre[cur]++;
} else {
pre[cur] = 1;
}
return pre;
}, {});
maxVal = Math.max.apply(Math, Object.keys(obj).map(function(o) {return obj[o]}));
for(let el in obj) {
if (obj[el] === maxVal) {
Object.defineProperty(objVal, el, {value: obj[el], writable: true});
}
}
return objVal;
}
结果.png