如何在JavaScript返回语句中用&&运算符优化年龄过滤代码?
优化年龄过滤代码:单变量分组与输出格式调整
关于&&运算符的疑问
filter回调需要返回布尔值来筛选元素,使用&&无法实现同时收集两组数据的需求。比如return age >=18 && age本质等价于return age >=18(正数年龄的非零值会被转为布尔true),没法同时处理18岁以下的分组逻辑,因此不适合用&&来实现分组。
优化方案:单变量分组+指定格式输出
使用Array.reduce()只需遍历数组一次,即可将年龄分为两组并存入单个对象变量,同时生成符合要求的中文输出:
const ages = [10, 15, 18, 21, 24, 30, 32]; // 单个变量存储两组结果 const ageGroups = ages.reduce((result, age) => { age >= 18 ? result.canVote.push(age) : result.cannotVote.push(age); return result; }, { canVote: [], cannotVote: [] }); // 输出指定格式的中文提示 console.log(`符合投票资格的年龄段:${ageGroups.canVote.join(',')}`); console.log(`不符合投票资格的年龄段:${ageGroups.cannotVote.join(',')}`);
代码说明
reduce通过累积器result一次性完成分组,避免了两次filter遍历数组的冗余操作join(',')将数组转换为逗号分隔的字符串,完全匹配你需要的输出格式- 三元运算符简化了分支判断逻辑,让代码更紧凑
内容的提问来源于stack exchange,提问作者mohit_pamma
相关产品推荐
相关产品推荐

