我正在尝试编写代码来查找数组中的模式。以下是我的逻辑。我该如何改进它是否正确?
var list = [2, 3, 6, 10, 10, 3];
var mode = function(values) {
function compare(a, b) {
return a - b;
};
values.sort(compare);
for (i = 0, j = 1; i < list.length, j < list.length + 1; i++, j++) {
if (list[i] == list[j]) {
console.log(" Its a Mode");
}
else {
console.log("not a mode");
}
}
}
mode(list);
如果i
和j
的值到达数组的末尾,会出现什么情况?
答案 0 :(得分:0)
[1,2,3,3,3,4,4,5,5,6]
那么3,4和5都会报告为模式,即使在这种情况下3是实际模式。此外,您实际上没有返回任何内容或积累任何内容,您只需将语句记录到控制台,甚至不会告诉您找到的数字(因此在调试时甚至没用)。
其次,循环不正确。结束循环的条件不能用逗号连接,整个语句必须评估为一个真或假的结果。
小点,你的循环变量没有被正确声明,如果你计划在别处使用它们,这将导致你不想要的行为。
如果我真的想要找到模式,我可能会构造一个对象,其中键是列表值,值是出现次数。然后,您可以将出现次数最多的那个作为模式。
使用您的列表的对象将类似于
{"2" : 1, "3": 2, "6": 1, "10" : 2}
这是多模态的,有3和10.