如果For循环中的条件

时间:2017-04-29 19:23:45

标签: javascript arrays

我正在寻找洞察我的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!');
      }
    }
  }
}

1 个答案:

答案 0 :(得分:4)

您无法通过执行someExistingArray != []将空数组与另一个空数组进行比较。

它们是完全不同的对象引用,因此无论内容和长度是否相同,它们永远不会相等。

检查数组长度

尝试

if (length > 3 && length <=10 && mergedGroup.length) {

并且

if (group1.length && group2.length) {