首页 > 解决方案 > 为什么我的代码给了我这个预期的 [Array(9)] 以深深等于 [Array(11)] 错误

问题描述

我正在尝试编写一个代码给定两个数字 X 和 Y,编写一个函数:1 返回 X 和 Y 之间的偶数,如果 X 大于 Y,否则它返回 x 和 y 之间的奇数,使用了我知道的所有组合测试他们的工作,但它仍然让我期望 [Array(9)] 深深地等于 [Array(11)] 错误

const number_game = (x, y) => {
  let numArray = [];

  if (x > y) {
    for (i = y + 1; i < x; i++) {
      if (i % 2 === 0) {
        numArray.push(i);
      }
    }
    return numArray;
  } else if (x > 1) {
    for (i = x; i < y; i++) {
      if (i % 2 !== 0) {
        numArray.push(i);
      }
    }
    return numArray;
  } else if (x < y || x === y) {
    for (i = x + 2; i < y; i++) {
      if (i % 2 !== 0) {
        numArray.push(i);
      }
    }
    return numArray;
  }
};

console.log(number_game(12, 0));
console.log(number_game(0, 12));

标签: javascript

解决方案


如果x > 1您从 开始i,但规范说您只应该返回 和 之间的数字,而不 包括它们。XY

在这种x < y || x == y情况下,您从x+2. 如果x+1是奇数,则不包括它。x = 0, y = 12如果您认为应该跳过,我认为您一定误解了问题陈述1

没有理由区别对待这些案件。而x == y应该只返回一个空数组的情况,这是特例。

const number_game = (x, y) => {
  let numArray = [];

  if (x > y) {
    for (i = y + 1; i < x; i++) {
      if (i % 2 === 0) {
        numArray.push(i);
      }
    }
  } else if (x < y) {
    for (i = x + 1; i < y; i++) {
      if (i % 2 !== 0) {
        numArray.push(i);
      }
    }
  }
  return numArray;
};

console.log(number_game(12, 0));
console.log(number_game(0, 12));


推荐阅读