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

如何向嵌套在对象中的数组push元素?变量作键调用push报错如何解决

问题根因

你遇到的报错有两个核心触发原因:

  1. 函数内部重复声明了和入参同名的category变量。Array.push()的返回值是新数组的长度(数字类型),赋值后原来存分类名的category变量会被覆盖为数字,后续如果再用这个变量访问数组就会报类型错误。
  2. 你提到打印结果是observer,说明你是在带响应式代理的框架(Vue/MobX等)环境下运行代码。如果传入的category参数值没有提前在masterChecklist中声明,响应式对象返回的不是预期的数组类型,调用push自然失败。你硬编码键名能生效就是因为硬编码的键是提前定义好的。

修复代码

去掉多余的变量赋值即可,不需要接收push的返回值,还可以加一层容错判断避免传入不存在的分类时报错:

function SaveTaskDetails(name, notes, category) {
  const newTask = {
    name,
    notes,
    cleaned: false
  }
  if (Array.isArray(masterChecklist[category])) {
    masterChecklist[category].push(newTask)
  }
}

如果是Vue2这类对动态新增属性支持不好的框架,新增分类时需要用框架提供的响应式API(比如this.$set(masterChecklist, 新分类名, []))来声明,才能正常操作数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:54:00