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

如何修复JavaScript数组奇偶分离函数的参数问题?

问题分析与修复

1. 参数传递错误(核心问题)

你当前调用函数时传入的是多个独立参数:evenAndOdd(1,2,3,4,5,6),但函数定义明确要求接收一个数组参数,这会导致函数内部的array被赋值为第一个参数1,剩余参数被直接忽略,自然无法正常遍历数组元素。

正确的调用方式有两种:

  • 直接传入数组字面量:
    console.log(evenAndOdd([1,2,3,4,5,6]))
    
  • 先定义数组变量再传递:
    let nums = [1,2,3,4,5,6];
    console.log(evenAndOdd(nums));
    

2. 奇偶分类逻辑验证

你写的奇偶判断逻辑完全正确:

  • 通过array[i]%2===0判断偶数,符合数学定义(能被2整除的数余数为0)
  • 偶数推入newarray[0],奇数推入newarray[1],完全匹配题目要求的返回结构

修正后的完整代码

function evenAndOdd(array){
    let newarray =[[],[]]
    for(let i=0; i<array.length; i++){
        if(array[i]%2===0){
            newarray[0].push(array[i])
        }
        else{
            newarray[1].push(array[i])
        }
    }
    return newarray
}
// 正确调用方式
console.log(evenAndOdd([1,2,3,4,5,6])) // 输出: [[2,4,6], [1,3,5]]

module.exports = evenAndOdd;

额外优化(可选)

如果想让函数同时支持传入多个独立数字的场景,可以用剩余参数语法修改函数定义,自动将所有传入的参数转为数组:

function evenAndOdd(...array){
    let newarray =[[],[]]
    for(let i=0; i<array.length; i++){
        if(array[i]%2===0){
            newarray[0].push(array[i])
        }
        else{
            newarray[1].push(array[i])
        }
    }
    return newarray
}
// 此时两种调用方式都有效
console.log(evenAndOdd(1,2,3,4,5,6)) // 输出: [[2,4,6], [1,3,5]]
console.log(evenAndOdd([1,2,3,4,5,6])) // 同样有效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:35:19