我正试图从阵列中获得最受欢迎/常用的单词,我尝试了下面的内容,但它只是说"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)
您只需循环遍历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)