查找模式 遍历多个数组的 FOR 循环
Finding MODE Iterating through FOR Loop for multiple arrays
Desired:
我有多个播放器数组,roundWinners
,在 FOR 循环中被迭代。 对于每个数组,我需要将数组的 MODE(最常出现的值)分配给新变量 winner
。
我不知道从哪里开始,所以我问实现这一目标的最有效方法是什么?
例:
for (i = 0; i < numberOf; i++) {
var roundWinners[0] = ["Joe", "Joe", "Bob", "Sue"]
var winner[0] ="Joe";
var roundWinners[1] = ["Joe", "Sue", "Bob", "Sue"]
var winner[1] ="Sue";
var roundWinners[2] = ["Bob", "Bob", "Bob", "Sue"]
var winner[2] ="Bob";
}
在循环之前,创建一个对象。
var ArrMode = {};
然后,在每次迭代中,获取名称,并将其用作属性名称,查看对象是否具有该名称的属性。如果是这样,请递增该属性的值。
如果没有,请添加该属性,并将其值设置为 1。
处理数组后,使用简单的替换如果更大测试来处理对象。每次更换时,请将该属性的名称作为获胜者。
处理完整个对象后,您持有的属性名称就是获胜者的名称。
我实际上没有答案
一个人发布了这个作为循环访问JS对象属性的一种方式,当你在设计时不知道属性名称时:
for (var property in object) {
if (object.hasOwnProperty(property)) {
// do stuff
}
}
您可以随时使用 JS 对象添加属性:
obj[theName] = theVal; // the name’d be a string, theVal’d be anything
// Like:
var theName = "John";
obj[theName] = 1;
因此,您将在循环之前创建一个空对象,其中包含名称(例如,例如"模式"),但没有属性
var modes = {};
然后,在数组的每次迭代中,循环访问对象的属性,根据数组中的当前名称检查属性的名称。
如果找到,则使用:
modes[arr[i]]++;
如果未找到,则使用
modes[arr[i]] = 1;
遍历数组后,迭代对象的属性,检查它们的值,并"记住"最高属性的名称和值。
工作:
//Mode Calc
function mode( arr ) {
if ( !Array.isArray( arr ) ) {
throw new TypeError( 'mode()::invalid input argument. Must provide an array.' );
}
var len = arr.length,
count = {},
max = 0,
vals = [],
val;
for ( var i = 0; i < len; i++ ) {
val = arr[ i ];
if ( !count[ val ] ) {
count[ val ] = 0;
}
count[ val ] += 1;
if ( count[ val ] === max ) {
vals.push( val );
} else {
max = count[ val ];
vals = [ val ];
}
}
return vals.sort( function sort( a, b ) {
return a - b;
});
} // end FUNCTION mode()
for (i = 0; i < numberOf; i++) {
winner = ( mode( roundWinners[i] ) );
}
相关文章:
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- 双“for”循环(循环)
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- Javascript在for循环中等待处理请求
- For循环在Jquery中只运行一次
- 如何在for循环中使用计数器
- for循环中的JavaScript闭包
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- For循环在调用时未运行
- 如何使用for循环添加所有按钮'单击事件
- 如何更改在for循环中生成的圆的位置
- 为什么这个For循环会使浏览器实验室崩溃
- 为什么我使用javascript获得了一个无限的for循环
- 在for循环中使用多维数组设置google.maps.Marker图标
- 如何在angularJS中运行for循环而不使用html标记