javascript中出现次数最多

时间:2018-03-18 15:36:04

标签: javascript html syntax-error mode

您对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>

2 个答案:

答案 0 :(得分:1)

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

&#13;
&#13;
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();
&#13;
&#13;
&#13;

答案 1 :(得分:1)

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

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

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

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

mode(input.split(","))