如何获取数组中最常见的值:javascript
我必须在JavaScript中找到数组中最常见的值 我的密码 eg阵列如何获取数组中最常见的值:javascript,javascript,arrays,Javascript,Arrays,我必须在JavaScript中找到数组中最常见的值 我的密码 eg阵列 var A = ["a", "c", "a", "b", "d", "e", "f"]; var B = ["a", "c", "a", "c", "d", "e", "f"]; function mode(array) { if(array.length == 0) return null; var modeMap = {}; var maxEl = array[0], maxCo
var A = ["a", "c", "a", "b", "d", "e", "f"];
var B = ["a", "c", "a", "c", "d", "e", "f"];
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;
}
代码在A的情况下工作正常,“A”最多重复2次,所以我得到“A”就可以了
但在B的情况下,“a”和“c”都重复2次,但我只得到a,但我的要求是在for循环后同时得到“a”和“c”。添加以下代码
result = [];
for ( var key in frequency )
{
if (frequency[key] == max)
{
result.push(key);
}
}
console.log(result);
它再次迭代频率数组以返回频率与最大频率相同的项目。收集频率相同的项目
函数getMostCommon(数组){
变量计数={};
array.forEach(函数(a){
计数[a]=(计数[a]| 0)+1;
});
返回Object.keys(count).reduce(函数(r,k,i){
如果(!i | | count[k]>count[r[0]]){
返回[k];
}
如果(计数[k]==计数[r[0]]){
r、 推(k);
}
返回r;
}, []);
}
变量a=[“a”、“c”、“a”、“b”、“d”、“e”、“f”],
b=[“a”、“c”、“a”、“c”、“d”、“e”、“f”];
document.write(“”+JSON.stringify(getMostCommon(a),0,4)+“”);
write(“”+JSON.stringify(getMostCommon(b),0,4)+“”)代码>和的可能重复,因为您正在执行严格大于的比较。您也只返回maxEl,它对应于1个索引。要返回多个结果,您应该返回一个数组,这样您就不能只存储
maxEl
元素。。我建议您跟踪maxCount,然后在最后返回该计数的所有元素,用英语写下您需要执行的步骤。然后,将英语转换成JavaScript。@BennyBottema-这不仅是一个重复的问题。。。OP的代码与所选答案相同。所以很明显,“尝试编码”的意思是“复制和粘贴”。
result = [];
for ( var key in frequency )
{
if (frequency[key] == max)
{
result.push(key);
}
}
console.log(result);