You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数组中移除偶数?JavaScript代码返回空数组不符合预期

问题分析与解决:筛选6位奇数序列号

你的函数返回空数组的核心问题是判断条件完全错误,导致没有任何元素符合要求被加入结果数组。

错误点拆解

  • 你写的currentBulb === 6是判断当前数字等于6,但你的输入都是6位大数(比如234567),这个条件永远不成立。你实际需要的是判断数字是6位数,而不是等于6。
  • 虽然currentBulb % 2 === 1是判断奇数的正确写法,但因为前面的条件不成立,整个if语句永远不会执行。

修正后的代码

以下是两种适合新手理解的修正方案:

方案1:转字符串判断位数(直观易懂)

function findEfficientBulbs(serialNumbers) {
  console.log(serialNumbers);
  const efficientSerialNumbers = [];
  for (let i = 0; i < serialNumbers.length; i++) {
    const currentBulb = serialNumbers[i];
    // 同时满足:是6位数 并且 是奇数
    if (currentBulb.toString().length === 6 && currentBulb % 2 === 1) {
      efficientSerialNumbers.push(currentBulb);
    }
  }
  return efficientSerialNumbers;
}

方案2:用数字范围判断位数(避免类型转换)

function findEfficientBulbs(serialNumbers) {
  console.log(serialNumbers);
  const efficientSerialNumbers = [];
  for (let i = 0; i < serialNumbers.length; i++) {
    const currentBulb = serialNumbers[i];
    // 6位数的范围是100000到999999,同时是奇数
    if (currentBulb >= 100000 && currentBulb <= 999999 && currentBulb % 2 === 1) {
      efficientSerialNumbers.push(currentBulb);
    }
  }
  return efficientSerialNumbers;
}

效果验证

输入测试数组[123456, 234567, 345678, 456789],两个方案都会返回预期的[234567, 456789]。

内容的提问来源于stack exchange,提问作者Karumu5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:43:14