如何去除键名字符串中的索引后检查其是否存在于指定数组
实现步骤
- 第一步:使用正则移除键名中所有带数字的索引部分(匹配
[数字]格式的片段替换为空) - 第二步:将键名最后一段属性的首字母转为大写,匹配目标数组的大小写规范
- 第三步:使用数组
includes方法校验处理后的字符串是否存在于目标数组中
完整代码示例
// 原始输入键名 const originKey = 'StudentMembers[1].active' // 目标校验数组 const checkArray = ["StudentMembers.Active","StudentMembers.InActive"] // 处理键名:先移除所有[数字]索引片段,再处理最后一段属性首字母大写 const processedKey = originKey.replace(/\[\d+\]/g, '') .replace(/\.([a-z])(.*)$/, (match, firstChar, rest) => `.${firstChar.toUpperCase()}${rest}`) // 校验是否存在 const isExist = checkArray.includes(processedKey) console.log(processedKey) // 输出:StudentMembers.Active console.log(isExist) // 输出:true
正则说明
\[\d+\]:匹配左方括号、1个及以上数字、右方括号的组合,全局替换为空即可移除所有索引部分,就算键名包含多段索引(如a[0].b[2].active)也能正常处理- 第二个正则匹配最后一个
.后面的内容,将首字母转为大写,适配目标数组的大小写规则
内容的提问来源于stack exchange,提问作者snoopy
相关产品推荐
相关产品推荐

