javascript 如何在JS中检查所有for循环结果是否相同

falq053o  于 2022-12-21  发布在  Java
关注(0)|答案(2)|浏览(196)
for (i = 1; i <= countPairs*2; i+=2) {
        num = input[i];
        num2 = input[i+1];
        sum = num + num2;
}

你好,我是一个JS初学者,我遇到了一个问题,我不知道如何解决。在这个例子中,我找到了数组中的数对之和。是否可以在同一个循环中检查所有的和是否都相同?你建议初学者使用哪种方法?下面是一个数组示例:[3,1,1,2,0,4,-2] - '3'表示数组中有多少对数字,并且结果必须为真,因为1+1=2,2+0=2,等等。
尝试了不同的方法,但没有一个100%有效

xfb7svmp

xfb7svmp1#

若要检查循环中的所有总和是否相同,可以将第一个总和存储在变量中,然后将每个后续总和与该变量进行比较。如果任何总和不同,可以将标志变量设置为false并退出循环。

let input = [3, 1, 1, 2, 0, 4, -2];
let countPairs = input[0];
let firstSum;
let flag = true;

for (let i = 1; i <= countPairs * 2; i += 2) {
  let num = input[i];
  let num2 = input[i + 1];
  let sum = num + num2;

  if (i === 1) {
    firstSum = sum;
  } else {
    if (sum !== firstSum) {
      flag = false;
      break;
    }
  }
}

if (flag) {
  console.log("All sums are the same");
} else {
  console.log("Not all sums are the same");
}
z6psavjg

z6psavjg2#

我会将第一个和存储在一个变量中,如果其他和不同,那么所有和都不相同。
但是另外一点,你的for循环有一些问题:

  • 如果从i = 1开始,则会错过数组的第一个元素(数组从0开始索引)
  • 通过使用i〈= countPairs*2作为条件,你就不需要调用数组的.length属性,而且你将结束检查数组的未定义索引(如果array.length = 5,你将尝试在最后一次迭代中得到array[10])。
  • 使用i〈= countPairs.length也会使数组溢出,因为length是元素的个数,不考虑索引0。所以你应该使用i〈countPairs.length
let sumComparison = null;
let allSumsAreTheSame = true;
for (i = 0; i < countPairs.length; i+=2) {
  const num = input[i];
  const num2 = input[i+1];
  const sum = num + num2;
  if (sumComparison === null) {
    sumComparison = sum;  
  }
  if (sum !== sumComparison) {
    allSumsAreTheSame = false;
  }
}

相关问题