如果我们发现重复的最大出现次数,如何在JavaScript中返回字符串中字母的最大出现次数?

如果我们发现重复的最大出现次数,如何在JavaScript中返回字符串中字母的最大出现次数?,javascript,Javascript,我需要返回字符串中字母的最大出现次数。我已经写了这本书,但它部分起作用了。我的意思是,字母的最大出现次数超过一次,然后只显示一个字母 function maxChar(str) { let obj = {}; for (let char of str) { !obj[char] ? (obj[char] = 1) : obj[char]++; } console.log("==obj", obj); let maxChar = "&quo

我需要返回字符串中字母的最大出现次数。我已经写了这本书,但它部分起作用了。我的意思是,字母的最大出现次数超过一次,然后只显示一个字母

function maxChar(str) {
  let obj = {};
  for (let char of str) {
    !obj[char] ? (obj[char] = 1) : obj[char]++;
  }
  console.log("==obj", obj);
  let maxChar = "";
  let count = 0;
  for (let char in obj) {
    if (obj[char] >= count) {
      count = obj[char];
      maxChar = char;
    }
  }

  console.log(`${maxChar} appear ${count} times`);
}

maxChar("aabbc");
我在控制台“b出现2次”中得到值。但实际上我需要在控制台中显示“a&b出现2次”。

  • 您可以使用
    string.split(“”)
    方法从输入字符串获取
    char数组
  • 从该数组中,您可以使用
    array.reduce
    方法获得每个字母的重复计数
  • 从复制的信息中,您可以使用
    Math.max
    Array.forEach
    获得最大计数并显示字母
函数maxChar(str){
const charArr=str.split(“”);
常量字母信息=字符减少((acc,cur)=>{
如果(acc[cur]==null){
acc[cur]=1;
}否则{
acc[cur]++;
}
返回acc;
}, {});
const maxCount=Math.max(…Object.values(letterInfo));
Object.entries(letterInfo).forEach(([letter,count])=>{
如果(计数===最大计数){
log(`${letter}出现${count}次`);
}
});
}

maxChar(“aabbc”)您可以改为维护字符数组:

函数maxChar(str){
设obj={};
for(str的let char){
!obj[char]?(obj[char]=1):obj[char]++;
}
console.log(“==obj”,obj);
设maxChars=[];
让计数=0;
for(让char在obj中){
if(obj[char]>=计数){
if(obj[char]>计数){
maxChars=[char];
}否则{
maxChars.push(char);
}
计数=对象[char];
}
}
log(`${maxChars.join(&)}出现${count}次`);
}
maxChar(“aabbc”);

搜索出现次数最多的字符时,必须区分两种不同的情况:

  • 您正在查看的角色出现的次数与当前最大值相同。然后必须将其添加到当前MaxChar的列表中

  • 您正在查看的角色出现的频率高于当前最大值。然后,您必须清除当前MaxChar的列表,并仅将当前char添加到该列表中

  • 让maxchars=[];
    for(让char在obj中){
    if(obj[char]>计数){
    计数=对象[char];
    maxchars=[char];
    } 
    else if(obj[char]==计数){
    maxchars.push(char);
    }
    }
    log(`${maxchars.join('&')}出现${count}次`);
    
    我只是更改了代码中的某些内容,它就起作用了。希望它能帮助你

    function maxChar(str) {
      let obj = {};
      for (let char of str) {
        !obj[char] ? (obj[char] = 1) : obj[char]++;
      }
      console.log('==obj', obj);
      let maxChar = '';
      let count = 0;
      for (let char in obj) {
        if (obj[char] > count) {
          count = obj[char];
          maxChar = char;
        } else if (obj[char] === count) {
          maxChar = `${maxChar} & ${char}`;
        }
      }
    
      console.log(`${maxChar} appear ${count} times`);
    }
    
    maxChar('aabbc');