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

如何向JavaScript对象中不存在的key对应的数组push元素

问题原因

你遇到的报错是因为首次访问obj[key]时,这个属性还没有被初始化,默认值为undefined,而undefined没有push方法,因此抛出TypeError: Cannot read property 'push' of undefined。

解决方案

方案1:循环内手动判断初始化

在访问obj[key]前先判断是否存在,不存在则赋值为空数组:

const obj = {}

someArray.forEach(key => {
    if (!obj[key]) {
        obj[key] = []
    }
    anotherArray.forEach(key2 => {
        obj[key].push(key2)
    })
})

方案2:使用逻辑或赋值运算符简化写法

ES2021新增的||=运算符可以简化判断逻辑,代码更简洁:

const obj = {}

someArray.forEach(key => {
    obj[key] ||= []
    anotherArray.forEach(key2 => {
        obj[key].push(key2)
    })
})

方案3:使用Map结构实现

如果可以用ES6的Map,也可以用Map替代普通对象,对不存在的键处理更规范:

const obj = new Map()

someArray.forEach(key => {
    if (!obj.has(key)) {
        obj.set(key, [])
    }
    anotherArray.forEach(key2 => {
        obj.get(key).push(key2)
    })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:36:04