如何用Javascript从选中的radio单选按钮生成指定格式的数据集
问题根因
你当前的代码存在两个问题:
- 你使用
map方法遍历数组,返回结果必然是数组格式,和你需要的对象结构不符 - 没有处理单选项未选中的边界情况,若某组radio没有被选中,
document.querySelector会返回null,调用.value会直接抛出异常
修正代码
const names = ["1","2","3"] // 初始化结果为对象,不是数组 let results = {}; document.querySelector("button").addEventListener("click", function(event){ // 每次点击先清空之前的结果,避免重复累加 results = {}; names.forEach(el => { const checkedRadio = document.querySelector(`input[name='${el}']:checked`); // 只有选中了才加入结果,符合你示例中只保留已选择题号的需求 if (checkedRadio) { results[el] = checkedRadio.value; } }); // 外层包你需要的someName字段 const finalData = { someName: results }; console.log(finalData); });
输出说明
如果第1题选Yes、第2题选No、第3题未选,上述代码输出的finalData结构完全匹配你的需求:
{ "someName": { "1": "1", "2": "0" } }
内容的提问来源于stack exchange,提问作者drago
相关产品推荐
相关产品推荐

