如何使用JavaScript将数组元素按类别分组为指定对象格式
分类复选框值分组功能实现方案
修改后完整代码
function category_array() { // 定义分组名映射,匹配期望的输出key、修正输入笔误 const groupNameMap = { men: 'men', mem: 'men', woman: 'women' }; // 用对象存储分组结果 const groupedResult = {}; const checkedBoxes = $('input[name="category[]"]:checked'); for (let i = 0; i < checkedBoxes.length; i++) { if (checkedBoxes[i].checked) { // 按下划线拆分值为分组标识和子项值 const [groupFlag, subValue] = checkedBoxes[i].value.split('_'); // 匹配得到最终分组名 const groupName = groupNameMap[groupFlag] || groupFlag; // 分组不存在则初始化空数组 if (!groupedResult[groupName]) { groupedResult[groupName] = []; } // 子项存入对应分组 groupedResult[groupName].push(subValue); } } console.log(groupedResult); // input元素只能存字符串,因此转为JSON字符串存储,使用时用JSON.parse解析即可 $("#category_list").val(JSON.stringify(groupedResult)); }
效果说明
输入值为['men_a', 'men_b', 'mem_c', 'woman_a', 'woman_d']时,输出结果完全匹配你期望的格式:
{men: ['a','b','c'], women: ['a','d']}
如果不需要修正笔误或者修改分组名,直接删除groupNameMap相关逻辑即可。
内容的提问来源于stack exchange,提问作者basskiller
相关产品推荐
相关产品推荐

