【问题标题】:Why is it always returning true?为什么它总是返回 true?
【发布时间】:2021-09-11 21:14:53
【问题描述】:

只是在edabit上做了一些练习,就是想不通。

提示:如果每个偶数索引包含一个偶数并且每个奇数索引包含一个奇数,则数组是特殊的。创建一个函数,如果数组是特殊的,则返回 true,否则返回 false。

   function isSpecialArray(arr) {
      for (var i = 0; i <arr.length; i+=2) {
        if ((arr[i] % 2 === 0) && (arr[i+1] % 2 === 1)){
          return true
        }
      }
      return false
    }

console.log(isSpecialArray([2, 7, 9, 1, 6, 1, 6, 3])) //➞ false

我在 for 循环之外返回了 false,但为什么它仍然返回 true?感谢您的帮助!

【问题讨论】:

  • 因为您在第一次检查时退出......当它无效时您应该返回。
  • 不一定是第一次检查,只要在正确位置找到任何偶数:奇数对

标签: javascript for-loop boolean


【解决方案1】:

因为当i=0 然后 arr[i] = 2arr[i+0] = 7

所以2 % 2 === 0 AND 7 % 2 === 1

满足条件,函数退出

function isSpecialArray(arr) {
  for (var i = 0; i < arr.length; i += 2) {
    console.log(arr[i]);
    console.log(arr[i+1]);
    if ((arr[i] % 2 === 0) && (arr[i + 1] % 2 === 1)) {
      return true
    }
  }
  return false
}

console.log(isSpecialArray([2, 7, 9, 1, 6, 1, 6, 3]));

【讨论】:

    【解决方案2】:

    返回 true 的 if 语句将在第一次运行时返回 true。

    因此,当您运行代码时,它会检查 arr[0] 是否为 2. 2 % 2 === 0(真)和 arr[1] 为 7,并且 7 % 2 === 1 为真。所以它在第一次运行后返回 true。

    您需要对此进行更改,使其仅在运行整个循环后才返回 true。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-29
      • 2012-04-03
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多