如何在javascript中从数组中获得最多重复值
如何从javascript中的数组中获取重复次数最多的值 这是我的阵列如何在javascript中从数组中获得最多重复值,javascript,jquery,arrays,Javascript,Jquery,Arrays,如何从javascript中的数组中获取重复次数最多的值 这是我的阵列 var data = [ { values: "Number of pips" }, { values: 4 }, { values: 4 }, { values: 4 }, { values: 5 }, { values: 2 }, { values: 6 }, { values: 6 }, { values: 5 } ]; 结果应该是
var data = [
{ values: "Number of pips" },
{ values: 4 },
{ values: 4 },
{ values: 4 },
{ values: 5 },
{ values: 2 },
{ values: 6 },
{ values: 6 },
{ values: 5 }
];
结果应该是4
,我怎样才能得到这个
我试过这个,是从
功能模式(阵列)
{
如果(array.length==0)
返回null;
var modeMap={};
var maxEl=array[0],maxCount=1;
对于(var i=0;imaxCount)
{
maxEl=el;
maxCount=模式映射[el];
}
}
返回最大值;
}
但这是return6,而不是4
var arr= [{ values: "Number of pips" }, { values: 4 }, { values: 4 }, { values: 4 }, { values: 5 }, { values: 2 }, { values: 6 }, { values: 6 }, { values: 5 }];
var uniqs = {};
for(var i = 0; i < arr.length; i++) {
uniqs[arr[i].values] = (uniqs[arr[i].values] || 0) + 1;
}
var max = { val: arr[0], count: 1 };
for(var u in uniqs) {
if(max.count < uniqs[u]) { max = { val: u, count: uniqs[u] }; }
}
alert(max.val);
var arr=[{values:Number of pip},{values:4},{values:4},{values:5},{values:2},{values:6},{values:6},{values:5}];
var uniqs={};
对于(变量i=0;i
我知道了
var arr= [{ values: "Number of pips" }, { values: 4 }, { values: 4 }, { values: 4 }, { values: 5 }, { values: 2 }, { values: 6 }, { values: 6 }, { values: 5 }];
var uniqs = {};
for(var i = 0; i < arr.length; i++) {
uniqs[arr[i].values] = (uniqs[arr[i].values] || 0) + 1;
}
var max = { val: arr[0], count: 1 };
for(var u in uniqs) {
if(max.count < uniqs[u]) { max = { val: u, count: uniqs[u] }; }
}
alert(max.val);
var arr=[{values:Number of pip},{values:4},{values:4},{values:5},{values:2},{values:6},{values:6},{values:5}];
var uniqs={};
对于(变量i=0;i
您尝试的代码的问题是您没有数字数组,而是有对象数组。如果要计算最多的
值,则必须使用该值,而不是整个对象
对于您尝试的代码,您只需更改以下行:
var el = array[i].values;
以下是完整的代码:
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].values;// This is the change.
if(modeMap[el] == null)
modeMap[el] = 1;
else
modeMap[el]++;
if(modeMap[el] > maxCount)
{
maxEl = el;
maxCount = modeMap[el];
}
}
return maxEl;
}
功能模式(阵列)
{
如果(array.length==0)
返回null;
var modeMap={};
var maxEl=array[0],maxCount=1;
对于(var i=0;imaxCount)
{
maxEl=el;
maxCount=模式映射[el];
}
}
返回最大值;
}
您尝试的代码的问题是您没有数字数组,而是有对象数组。如果要计算最多的值,则必须使用该值,而不是整个对象
对于您尝试的代码,您只需更改以下行:
var el = array[i].values;
以下是完整的代码:
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].values;// This is the change.
if(modeMap[el] == null)
modeMap[el] = 1;
else
modeMap[el]++;
if(modeMap[el] > maxCount)
{
maxEl = el;
maxCount = modeMap[el];
}
}
return maxEl;
}
功能模式(阵列)
{
如果(array.length==0)
返回null;
var modeMap={};
var maxEl=array[0],maxCount=1;
对于(var i=0;imaxCount)
{
maxEl=el;
maxCount=模式映射[el];
}
}
返回最大值;
}
我不相信你尝试过任何事情……你自己尝试过任何事情吗?检查此项我不相信你尝试过任何事情……你自己尝试过任何事情吗?检查此项首先,当人们没有试图自己解决问题时,不要鼓励他们问问题。其次,你的答案并没有提供解决方案。说真的,你认为告诉OP“解决这个问题”有帮助吗?我认为这作为一个评论会更好,然后OP可以尝试编写你的代码recommendations@musefan我不同意你的“当人们没有试图解决问题时,不要鼓励他们提问”,我同意我的回答可以是一个评论。贬低我只是nasty@Zo72当前位置但也有人在提问时没有表现出任何解决问题的企图,这是在指南中。最低要求是至少包含当前代码。。。不管怎样,这不是你被否决的原因。我投了反对票,因为你的答案并不能解决这个问题,它只是一个关于如何解决这个问题的建议problem@musefan对于这个粗略的问题(至少在我回答的时候),我给出了一个粗略的解决方案。如何计算数组中的重复项?对数组进行排序,然后遍历。。。我认为这是公平的。。。无论如何,你有权否决我,所以我接受这一点:首先,当人们没有试图自己解决问题时,不要鼓励他们提问。其次,你的答案并没有提供解决方案。说真的,你认为告诉OP“解决这个问题”有帮助吗?我认为这作为一个评论会更好,然后OP可以尝试编写你的代码recommendations@musefan我不同意你的“当人们没有试图解决问题时,不要鼓励他们提问”,我同意我的回答可以是一个评论。贬低我只是nasty@Zo72当前位置但也有人在提问时没有表现出任何解决问题的企图,这是在指南中。最低要求是至少包含当前代码。。。不管怎样,这不是你被否决的原因。我投了反对票,因为你的回答没有提供问题的解决方案,只是一个如何解决问题的建议