[英]How to find number of occurrence of highest element in an Javascript Array?
[英]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.