用Javascript计算模式

我遇到了一些问题,如何真正获得我所得到的地图的最大价值。 现在,我的代码只显示每个键的实际计数值,我坚持试图logging最大值,我认为在我的代码中发生的是for循环通过计数[键]数组,但它会保持在1,这是第一个值,并停止,因为唯一的数字logging是1.我不期待的实际答案,也许一些提示和暗示,会导致我正确的方式。 提前致谢。

var Mode = function(data) { var counts = {}; for (let i = 0; i < data.length; i++) { counts[data[i]] = (counts[data[i]] + 1) || 1; } for (var key in counts) { if (counts.hasOwnProperty(key)) { var maxValue = Math.max(counts[key]); } } return maxValue; } console.log(Mode([1, 5, 2, 3, 3, 4, 4, 4])); 

你需要在这个array.try这个数更高的数

 var max =0; var Mode = function(data) { var counts = {}; for (let i = 0; i < data.length; i++) { counts[data[i]] = (counts[data[i]] + 1) || 1; } for (var key in counts) { if (counts.hasOwnProperty(key)) { if(counts[key] > max){max=counts[key];} } } return max; } console.log(Mode([1, 5, 2, 3, 3, 4,4, 4, 4]));//4 is a higher count console.log(Mode([ 5,5,5,5,5,5,5, 2, 3, 3, 4, 4]));//5 is higher count 

我终于通过使用下面的代码解决了这个问题:

 var Mode = function(data) { var counts = {}; for (let i = 0; i < data.length; i++) { counts[data[i]] = (counts[data[i]] || 0) + 1 } var max = 0; var values = []; for (var key in counts) { if (counts.hasOwnProperty(key)) { if (counts[key] > max) { max = counts[key]; values = [key]; } else if (counts[key] === max) { max = counts[key]; values.push(key); } } } return "The highest value is " + values.join(", ") + " with a count of " + max; } console.log(Mode([1, 2, 3, 3, 4, 4])); 

非常感谢你的帮助 :)。