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

如何按group键合并同key关联数组的value值?表单脚本优化

合并表单复选框同group的value字段解决方案

我看你遇到了表单处理的问题——当重复添加包含同名元素的表单区域后,复选框的同group值没法合并,反而生成了多个数组项。咱们来修改脚本实现按group合并value的需求:

修改后的完整脚本

var elem = document.getElementById('rn_QuestionSubmit').elements;
var result = {};

for(var i = 0; i < elem.length; i++) {
  var element = elem[i];
  var item = {};

  // 处理下拉框的text字段
  if (element.type === 'select-one') {
    item.text = element.options[element.selectedIndex].text;
  } else {
    item.text = '';
  }

  item.group = elem[i].dataset.group;

  if (element.type === 'radio' || element.type === 'checkbox') {
    if (element.checked) {
      item.value = element.value;
      const targetArray = result[element.name] || [];
      
      if (element.type === 'checkbox') {
        // 复选框:查找同group的已有项,合并value
        const existingItem = targetArray.find(item => item.group === elem[i].dataset.group);
        if (existingItem) {
          existingItem.value += `, ${element.value}`;
        } else {
          targetArray.push(item);
        }
      } else {
        // 单选框:直接添加(同name下只会有一个选中项)
        targetArray.push(item);
      }

      result[element.name] = targetArray;
    }
  } else {
    // 处理其他表单元素
    item.value = element.value;
    if (result[element.name]) {
      result[element.name].push(item);
    } else {
      result[element.name] = [item];
    }
  }
}

const finalResult = JSON.stringify(result);
console.log(`[${finalResult}]`);
return `[${finalResult}]`;

关键改动说明

  • 复选框合并逻辑:针对复选框,在存入对应name的数组前,先通过find方法查找是否已有相同group的项。如果存在,就将当前选中的value以逗号加空格的格式追加到已有项的value中;如果不存在,再添加新的item到数组里。
  • 单选框保留原有逻辑:因为单选框同name下只会有一个选中项,所以保持原有的添加逻辑即可。
  • 代码优化:将targetArray提前定义,避免重复判断result[element.name],让代码更简洁。

这样处理后,当你添加同group的复选框条目时,就会得到你想要的合并结果:

"support_advice": [{ "text": "", "group": "check_lifestyle_26", "value": "Physical activity &amp; Exercise, Overall General Health &amp; Wellbeing" }]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:30