javascript - 对象不返回最大数量 - JS

标签 javascript object

我试图返回最大重复词。但是由于某种原因它没有返回最大值。这是负责的代码:

var max = -Infinity;
        for(var prop in myObj){
          if(myObj[prop] > max){
            max = prop;
          }
        }
       return max;

这个返回 "h"w/c 是单词 'hello' 中的第一个元素...它应该是 'l'...

现在这是我的全部代码:

function findMaxRepeatCountInWord(word) {
  var splitWord = word.split('');
 var myObj = {};
 for(var i = 0; i < splitWord.length; i++){
   if(myObj.hasOwnProperty(splitWord[i])){
     myObj[splitWord[i]]++;
   }else{
     myObj[splitWord[i]] = 1;
   }
 }
  var max = -Infinity;
    for(var prop in myObj){
      if(myObj[prop] > max){
        max = prop;
      }
    }
   return max;
}

console.log(findMaxRepeatCountInWord('helllo'));

知道我错过了什么吗?

最佳答案

您首先比较一个值,然后将 max 更改为一个键。

我建议只对键使用 max,并使用键的第一个元素进行初始化。然后从第二个键迭代并检查该值是否大于实际最大值。

function findMaxRepeatCountInWord(word) {
  var splitWord = word.split('');
  var myObj = {};
  for (var i = 0; i < splitWord.length; i++) {
    if (myObj.hasOwnProperty(splitWord[i])) {
      myObj[splitWord[i]]++;
    } else {
      myObj[splitWord[i]] = 1;
    }
  }
  var keys = Object.keys(myObj),       // take the keys in an array
      max = keys[0];                   // initialize with the first key
  
  for (i = 1; i < keys.length; i++) {  // iterate from the second key
    if (myObj[keys[i]] > myObj[max]) { // check and
      max = keys[i];                   // update
    }
  }
  return max;
}

console.log(findMaxRepeatCountInWord('helllo'));

关于javascript - 对象不返回最大数量 - JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46027595/

相关文章:

javascript - 通过javascript添加内容

javascript - 在 ReactJS 中使用反向数据流进行子级与父级通信的好方法是什么?

javascript - Easeljs 中动画的奇怪行为

ruby - 如何像在 Javascript 中一样在 Ruby 中动态创建对象及其方法?

javascript - 更改键后如何移动数组中的对象

javascript - 如何以对象作为成员按降序循环遍历 JavaScript 对象文字

JavaScript:如何在数组中存储对象?

javascript - 合并 2 个对象数组,其中一个设置键,另一个设置值

javascript - 使用 javascript 更改 html 属性

javascript - 如何从从磁盘加载的 JS 在 Mobile Safari 中打开数据库