相信大家看到這個(gè)問題刹衫,有可能想到的是類似于以下的答案:
function getmaxObj(str) {
if (str.length == 1) {
return str;
}
var newObj = {};
for (var i = 0; i < str.length; i++) {
if (!newObj[str.charAt(i)])
newObj[str.charAt(i)] = 1;
else
newObj[str.charAt(i)] += 1;
}
console.log(newObj )
var maxObj ={
maxkey :"",
maxvalue:0
}
for (var k in newObj) {
if (newObj[k] > maxObj.maxvalue) {
maxObj.maxvalue = newObj[k];
maxObj.maxkey = k;
}
}
return maxObj;
}
var result =getmaxObj("zhangpeiyue.com");
// 出現(xiàn)最多的字符:e
console.log("出現(xiàn)最多的字符:"+result.maxkey);
// 出現(xiàn)次數(shù):2
console.log("出現(xiàn)次數(shù):"+result.maxvalue);
但是上面程序有一些小小的問題:如果最多的字符串有多個(gè)的話斟冕,只能統(tǒng)計(jì)出第一個(gè)字符串。例如我要統(tǒng)計(jì)字符串"zhang":
var result =getmaxObj("zhang");
// 出現(xiàn)最多的字符:z
console.log("出現(xiàn)最多的字符:"+result.maxkey);
// 出現(xiàn)次數(shù):1
console.log("出現(xiàn)次數(shù):"+result.maxvalue);
從結(jié)果可以看出缅阳,只統(tǒng)計(jì)出了字符串"z",而其它符合條件的字符串并沒有統(tǒng)計(jì)出來磕蛇,所以這樣有些不科學(xué)。我們可以將代碼優(yōu)化下(不難理解十办,所以我就不注釋啦):
function getmaxObj(str) {
if (str.length == 1) {
return str;
}
var newObj = {};
for (var i = 0; i < str.length; i++) {
if (!newObj[str.charAt(i)])
newObj[str.charAt(i)] = 1;
else
newObj[str.charAt(i)] += 1;
}
console.log(newObj )
var maxObj ={
maxkey :[],
maxvalue:0
}
for (var k in newObj) {
if (newObj[k] > maxObj.maxvalue) {
maxObj.maxvalue = newObj[k];
maxObj.maxkey = [k];
}else if(newObj[k] === maxObj.maxvalue)
maxObj.maxkey.push(k);
}
return maxObj;
}
var result =getmaxObj("zhang");
// 出現(xiàn)最多的字符:z秀撇、h、a向族、n呵燕、g
console.log("出現(xiàn)最多的字符:"+result.maxkey.join("、"));
// 出現(xiàn)次數(shù):1
console.log("出現(xiàn)次數(shù):"+result.maxvalue);
歡迎各路大神吐槽件相!
—————END—————
[公眾號回復(fù)“電子書”再扭,送你經(jīng)典前端電子書籍]
喜歡本文的朋友們氧苍,歡迎關(guān)注微信公眾號張培躍,收看更多精彩內(nèi)容