如何从数组中移除偶数?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
相关产品推荐
相关产品推荐

