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

JavaScript中如何动态遍历数组?代码取值为undefined该如何解决?

问题原因分析
  • 关键字使用错误:JS中不存在int关键字,循环变量声明应该用var/let;同时变量声明的Var存在大小写错误,JS大小写敏感,必须使用小写的var/let。
  • 属性访问方式错误:使用点语法访问动态属性名时,会直接将.后的标识符当作固定属性名,而非解析为对应参数的值。你当前的写法实际是在取数组元素中名为objectId、objectValue的属性,而非参数传入的deptId、deptValue属性,这是返回undefined的核心原因。
  • 作用域问题:当前你在for循环内部声明的变量,外部无法直接访问,如果需要拿到遍历后的结果,需要在循环外部声明变量存储或者直接返回对应值。
修复后的代码
// 函数调用
validateJsonArray(deptJson, "deptId", "deptValue");

function validateJsonArray(inputArray, objectId, objectValue){
    // 如需存储所有遍历结果可提前声明数组
    const result = []
    for(let i=0; i<inputArray.length; i++){
        // 动态属性必须使用方括号语法访问
        const selectedObjectId = inputArray[i][objectId];
        const selectedObjectValue = inputArray[i][objectValue];
        // 示例:将结果存入数组,可替换为自身业务逻辑
        result.push({
            id: selectedObjectId,
            value: selectedObjectValue
        })
        console.log(selectedObjectId, selectedObjectValue)
    }
    // 外部需要使用结果时直接返回即可
    return result
}
额外优化建议

现代JS环境下可以直接用forEach遍历,代码更简洁:

function validateJsonArray(inputArray, objectId, objectValue){
    inputArray.forEach(item => {
        const selectedObjectId = item[objectId]
        const selectedObjectValue = item[objectValue]
        // 写入业务逻辑即可
    })
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:57:04