如何获取数组式表单字段指定位置的索引内容?
提取表单字段名指定位置片段的方法
针对lines[1][config][options][346]这类格式的字段名,以下几种方法可以帮你获取任意指定位置的片段:
方法1:提取所有方括号内的内容
如果目标是获取[]包裹的部分(如1、config、options、346),可以用正则匹配后提取:
const fieldName = 'lines[0][config][options][343]'; // 匹配所有[]内的内容并提取出来 const bracketParts = fieldName.match(/\[([^\]]+)\]/g).map(str => str.slice(1, -1)); // 通过索引获取指定位置(索引从0开始) console.log(bracketParts[0]); // 输出 "0"(第一个[]里的内容) console.log(bracketParts[2]); // 输出 "options"(第三个[]里的内容)
方法2:包含开头基础名的完整拆分
如果需要把开头的lines也作为一部分,整体拆分所有片段:
const fieldName = 'lines[0][config][options][343]'; // 用[或]拆分字符串,过滤空值得到所有有效片段 const allParts = fieldName.split(/\[|\]/).filter(part => part); console.log(allParts[0]); // 输出 "lines"(基础字段名) console.log(allParts[3]); // 输出 "options"(第三个[]里的内容) console.log(allParts[4]); // 输出 "343"(最后一个[]里的内容)
方法3:封装函数快速获取指定位置
可以写一个工具函数,直接传入位置参数(支持从1开始计数)获取对应内容:
function getFieldPart(fieldName, position) { const bracketParts = fieldName.match(/\[([^\]]+)\]/g); if (!bracketParts || position > bracketParts.length) return null; return bracketParts[position - 1].slice(1, -1); } const fieldName = 'lines[0][config][options][343]'; console.log(getFieldPart(fieldName, 1)); // 输出 "0" console.log(getFieldPart(fieldName, 4)); // 输出 "343"
关键说明
- 正则
\[([^\]]+)\]专门匹配[和]之间的内容,确保不会遗漏任何一个方括号片段; - 拆分后的数组索引可以灵活调整,根据你的需求选择从0或1开始计数;
- 若字段名格式不固定,建议在函数中添加格式校验,避免报错。
内容的提问来源于stack exchange,提问作者puntable
相关产品推荐
相关产品推荐

