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

jQuery如何向对象属性对应的数组中动态添加元素

错误原因

  • 初始对象结构不符合要求:你当前给unit、tm赋值用的是大括号{},属于对象类型,没有数组的push方法,这是代码报错的核心原因,数组需要用中括号[]定义。
  • 给对象新增属性的语法错误:objs本身是普通对象,不是数组,不能调用push方法,给对象新增属性直接使用objs[键名] = 值的语法即可。
  • push参数错误:objs[fot].push({val})会将包含val属性的对象推入数组,和你要直接存入值的需求不符,直接传入val即可。
  • 代码中多余的??属于语法错误,需要删除。

修正后的代码

初始对象定义

var objs = { 
  unit: ['x1', 'x2', 'x3'], 
  tm: ['y1', 'y2', 'y3'] 
}

点击事件逻辑

$(document).on('click','.btn',function(){
     var fot = $(this).attr('for')
     var val = $(this).attr('value')

     if (fot in objs) {
        // 已存在对应键,向数组追加值
        objs[fot].push(val)
     } else {
        // 不存在对应键,新增属性并赋值为包含当前值的数组
        objs[fot] = [val]
     }
});

效果说明

点击btn1后,objs.unit会更新为['x1','x2','x3','val4'];点击btn2后,objs会新增dept属性,值为['xyz1'],和你的预期一致。

注:你预期示例中使用大括号{}包裹列表属于概念混淆,JS中数组用中括号[]存储有序值列表,对象用大括号{}存储键值对,注意区分即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:36:02