我正在寻找洞察我的for循环中的if条件。目前,当我执行此函数时,for循环外的初始if条件运行,然后for循环开始。我的测试数据的长度为12,因此for循环运行if (length > 10)
条件两次,然后运行else if (length == 10)
条件。但是,它会停止并且不会执行下一个else if
条件(else if (length > 3 && length <=10 && mergedGroup != [])
)。
我认为问题在于mergedGroup != []
,但我不知道如何说“除非长度&gt; 3和长度&lt; = 10且mergedGroup数组不为空,否则不执行此条件。”
假设这个executeFullRun
函数中的所有函数和变量都是构建的并且是正确的(我已经在控制台中逐行测试它们,只是将它们放入一个函数中以将所有函数一起运行)。 / p>
有什么见解?
function executeFullRun(players) {
if (group1 != [] && group2!= []) {
makeGroups(players);
}
var length = group1.length + group2.length;
for (i=0;i<length;i++) {
if (length > 10) {
while (group1.length + group2.length > 10) {
winTribalImmunity(group1,group2);
voteOffPreMerge(vulnerablePlayers);
console.log('Group Vote');
length -= 1;
console.log(length);
}
} else if (length == 10) {
if (group1.length + group2.length == 10) {
mergeGroups(group1,group2);
console.log('Merge Groups');
console.log(length);
}
} else if (length > 3 && length <=10 && mergedGroup != []) {
while (length > 3) {
winIndividualImmunity(mergedGroup);
voteOffPostMerge(vulnerableIndividuals);
console.log('Individual Vote');
length -= 1;
console.log(length);
}
} else {
if (length == 3) {
winGame(mergedGroup);
console.log('Winner!');
}
}
}
}
答案 0 :(得分:4)
您无法通过执行someExistingArray != []
将空数组与另一个空数组进行比较。
它们是完全不同的对象引用,因此无论内容和长度是否相同,它们永远不会相等。
检查数组长度
尝试
if (length > 3 && length <=10 && mergedGroup.length) {
并且
if (group1.length && group2.length) {