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

JavaScript:如何向数组内单个对象追加新键值对而非新增对象

解决方案

你现在的问题是每次循环都创建新对象并存入数组,导致最终是多个对象的数组。要改成把所有键值对合并到单个对象里,再放到数组中,只需做以下改动:

修正后的完整代码

var mergeRecipient = function(){
    var mergeData = {}; // 改成初始化空对象,用来收集所有键值对

    $('input:checked').each(function() {
      var key_ = $(this).attr('name');
      var val  = $(this).val(); // 这里要修正:原代码取name属性后调用val()是错误的,直接用$(this).val()拿复选框的值
      
      mergeData[key_] = val; // 直接给单个对象添加键值对,不用每次创建新对象
    });

    // 如果最终需要数组包裹单个对象的结构,就把对象放进数组
    var resultArray = [mergeData];
    return resultArray;
};

关键改动说明

  • 把mergeData的初始化从数组[]改成空对象{},用来集中存储所有键值对
  • 循环内不再创建新对象push到数组,而是直接给mergeData赋值:mergeData[key_] = val
  • 修复了取值错误:原代码$(this).attr('name').val()是无效的,因为attr('name')返回的是字符串,没有val()方法,正确写法是$(this).val()获取复选框的选中值

数据结构对比

  • 原错误结构:
const dataObj = [{
  "jurisdiction": "SCPB - LON"
}, {
  "firstName": "David Dynamic"
}];
  • 修改后得到的预期结构:
const dataObj = [{
  jurisdiction: "SCPB - LON",
  firstName   : "David Dynamic"
}];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:03:35