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

如何使用jQuery each函数将复选框选中值存入JS对象?

问题分析与解决方案

首先你给出的目标格式存在语法错误,对象内部不能直接并列多个对象,正确的格式应该是数组(用来存储多个食物条目),比如:

food: [
  {id: 1, name: 'egg'},
  {id: 2, name: 'meat'}
]

你的原有代码存在两个核心问题:

  • 使用Object.assign会每次覆盖exclude_foods里的id和name属性,最终只会保留最后一个选中的复选框值
  • id固定为1,无法根据选中项自动递增

修正后的代码

// 初始化数组来存储选中的食物项
var exclude_foods = [];

jQuery('input[name=exclude_food]:checked').each(function(index){
  // index从0开始,所以id用index+1实现递增
  exclude_foods.push({
    id: index + 1,
    name: jQuery(this).val()
  });
});

// 最终可以把数组赋值给food对象
var food = { items: exclude_foods };
// 或者如果直接要food作为数组:var food = exclude_foods;

补充说明

  • 如果你的复选框本身带有data-id属性(比如<input type="checkbox" name="exclude_food" value="egg" data-id="1">),可以直接用该属性作为id,替换index+1为jQuery(this).data('id'),这样id更准确
  • 若你确实需要food是一个包含多个键值对的对象(而非数组),可以用选中项的id作为键,比如:
var food = {};
jQuery('input[name=exclude_food]:checked').each(function(index){
  var id = index + 1;
  food[id] = { id: id, name: jQuery(this).val() };
});
// 结果:food = { 1: {id:1, name:'egg'}, 2: {id:2, name:'meat'} }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:41:13