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

如何在含数组的JavaScript对象中查找指定key对应的value?

嵌套对象指定key值查找方法实现

原有代码问题

  • forEach循环的return只会终止当前单次回调执行,无法跳出整个循环,也无法将值返回给外层的getKeyValueFromObject函数
  • 函数最后返回空对象{},不符合key不存在时返回undefined的要求
  • 用this调用自身如果该函数不是类的方法,会出现this指向错误导致调用失败
  • 没有处理非对象类型的边界值,遇到数组内的基础类型元素时会触发运行报错

正确实现代码

function getKeyValueFromObject(obj, searchKey) {
    // 过滤null和非对象类型,直接返回未找到
    if (obj === null || typeof obj !== 'object') return undefined

    // 优先判断当前层级是否存在目标key
    if (Object.prototype.hasOwnProperty.call(obj, searchKey)) {
        return obj[searchKey]
    }

    // 遍历所有属性值递归查找
    for (const val of Object.values(obj)) {
        const findResult = getKeyValueFromObject(val, searchKey)
        if (findResult !== undefined) {
            return findResult
        }
    }

    // 全路径未找到返回undefined
    return undefined
}

效果验证

首先修正你给出的示例OBJ的语法问题(属性之间遗漏逗号)后运行测试:

var OBJ = {
    code: 42,
    item1: [{
        id: 1,
        name: 'foo'
    }, {
        id: 2,
        city: 'NY',
        name: 'bar'
    }],
    thing: [{
        id: 14,
        name: 'foo'
    }, {
        id: 5,
        street: 'E43',
        name: 'pub'
    }]
};

console.log(getKeyValueFromObject(OBJ , 'street')) // 输出 'E43'
console.log(getKeyValueFromObject(OBJ , 'dog')) // 输出 undefined

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:42:01