繁体   English   中英

javascript中出现次数最多

[英]Highest occurrence in javascript

嗨我对javascript的了解非常有限且基本。 基本上下面是我将提示弹出窗口,显示值的答案。 事情来自我在下面找到的编码,如果我必须插入一个数组,可以说1,2,3,2输出,因为它在数组中出现次数最多。 有没有办法编辑此代码,以便上面的输入答案为2

我做了相当多的研究:

以下是链接:

码:

<script type="text/javascript">
    function evaluate() {
      var input = prompt("Please enter your input");
      var array = new Array();

     function mode(array)
{
    if(array.length == 0)
        return null;
    var modeMap = {};
    var maxEl = array[0], maxCount = 1;
    for(var i = 0; i < array.length; i++)
    {
        var el = array[i];
        if(modeMap[el] == null)
            modeMap[el] = 1;
        else
            modeMap[el]++;  
        if(modeMap[el] > maxCount)
        {
            maxEl = el;
            maxCount = modeMap[el];
        }
    }
    return maxEl;
}
      document.writeln("Your calculation is: ");
      document.writeln(mode(input) + " with a starting input string of: " + input);

    }
  </script>
      <script type="text/javascript">
    evaluate();
  </script>

您希望首先将字符串'1,2,3,2'转换为数组[ 1, 2, 3, 2 ] '1,2,3,2' [ 1, 2, 3, 2 ] 这可以通过split功能完成。 您可能还想trim每个元素,以防有人用空格格式化它们。

 function evaluate() { const input = prompt("Please enter the array of integers") .split(',') .map(item => item.trim()); function mode(items) { const counts = items .reduce((counts, item) => { const currentItemCount = counts.get(item) || 0; return counts.set(item, currentItemCount + 1); }, new Map()); const maxEntry = Array.from(counts.entries()) .reduce((maxEntry, entry) => { return entry[1] > maxEntry[1] ? entry : maxEntry; }); return maxEntry[0]; } document.writeln("Your calculation is: "); document.writeln(mode(input) + " with a starting input string of: " + input); } evaluate(); 

您的问题源于这样一个事实,即您永远不会将输入(您从prompt作为字符串接收)转换为实际数组。

当直接在字符串上调用mode ,逗号将作为最常见的返回,因为逗号字符串中最常见的字符。

要解决此问题,您需要将字符串转换为实际数组,以便操作数组的元素而不是字符串的字符。

你可以使用split函数将逗号分隔你的字符串( "1,2,3,2" )分成一个数组( ["1", "2", "3", "2"] )然后你可以通过到模式功能:

mode(input.split(","))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM