数组中的热门词汇

6 javascript arrays

我正试图从阵列中获得最受欢迎/常用的单词,我尝试了下面的内容,但它只是说"Rain",而是在控制台中显示这个[rain:2,hot:1].

我究竟做错了什么?我只想显示没有数字的头号最流行的单词.

任何帮助/建议都会有所帮助,谢谢.

  var defaultArray = [{age:"25-35",country:"united kingdom",sex:"male",word:"rain"},{age:"25-35",country:"united arab emirates",sex:"male",word:"hot"},{age:"25-35",country:"zimbabwe",sex:"female",word:"rain"}];

  /* Popular */
  function popular() {
    var words = [];
    for(var p = 0; p < defaultArray.length; p++){
      var word = defaultArray[p].word;
      words.push(word);
      console.log(words);
    }
    var count = [];
    for (var i = 0, j = words.length; i < j; i++) {
      if (count[words[i]]) {
        count[words[i]]++;
      }
      else {
        count[words[i]] = 1;
      }
    }
    console.log(count);
  }
  popular();
Run Code Online (Sandbox Code Playgroud)

Ton*_*kle 5

您只需循环遍历count数组并找到具有最高计数的单词:

var mostCommonWordCount = 0;
var mostCommonWord = "";
for (var key in count) {
    if (count[key] > mostCommonWordCount) {
        mostCommonWordCount = count[key]
        mostCommonWord = key;
    }
}
console.log(mostCommonWord);
Run Code Online (Sandbox Code Playgroud)

运行后,mostCommonWord将包含具有最高计数的单词.唯一需要注意的是,例如,如果有多个单词出现3次,那么count数组中的第一个单词就是要分配给的单词mostCommonWord.因此,如果你想要的东西会返回多个单词,如果它们都具有相同的计数,你需要稍微修改一下.

免责声明:有可能有更好的方法来做到这一点,但这是我想出的第一件事.


小智 1

与您原来的功能保持一致。您只需稍加调整即可获得最流行的单词。注意:这没有考虑关系。

var defaultArray = [
  {age:"25-35",country:"united arab emirates",sex:"male",word:"hot"},
  {age:"25-35",country:"united kingdom",sex:"male",word:"rain"},
  {age:"25-35",country:"united arabemirates",sex:"male",word:"hot"}];

/* Popular */
function popular() {
  var count = 0
  var max=0;
  var currentword="";
  var words = [];

  for(var p = 0; p < defaultArray.length; p++){
    var word = defaultArray[p].word;
    words.push(word);
  }

  for (var i = 0; i<words.length; i++) {
    if (max<=count){
      max=count;    
    }
    count=0;
    for (var x=0; x<words.length; x++)
    {
      if (words[i]==words[x] ){
        count++;
      }
      if (count>max)currentword=words[i];
    }
  }
  console.log(currentword);
} 
Run Code Online (Sandbox Code Playgroud)