【问题标题】:Highest occurrence in javascriptjavascript中出现次数最多的
【发布时间】:2018-08-27 05:34:27
【问题描述】:

您好,我对 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>

【问题讨论】:

  • 问题可能出在输入功能中,您没有提供..
  • 对不起,我没有复制好,请尽快修改

标签: javascript html syntax-error mode


【解决方案1】:

您想先将字符串'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();

【讨论】:

  • 非常感谢^.^
【解决方案2】:

您的问题源于您从未将输入(从prompt 作为字符串接收)转换为实际数组的事实。

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

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

您可以使用split 函数将逗号分隔的字符串 ("1,2,3,2") 拆分为一个数组 (["1", "2", "3", "2"]),然后您可以将其传递给 mode 函数:

mode(input.split(","))

【讨论】:

  • 非常感谢^.^
猜你喜欢
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-05
  • 2021-11-09
相关资源
最近更新 更多