jQuery如何提取数组元素中方括号包裹的指定数字
数组内字符串提取方括号包裹数字的实现方法
针对你已生成的productArray数据,可以直接遍历数组项提取目标值,两种无依赖的实现方案如下:
正则匹配方案(适配性更强,代码简洁)
通过正则表达式精准定位方括号内的连续数字,避免和字符串后方的普通数字混淆:
const extractedIds = productArray.map(item => { const matched = item.match(/\[(\d+)\]/); // 匹配成功返回数字类型结果,失败可按业务设置兜底值 return matched ? Number(matched[1]) : null; });
对示例数据["[44]Medicine 2", "[63]Test Sam "]执行上述代码,最终得到的结果为[44, 63],完全匹配提取需求。
如果可以确认每一项都严格遵循[数字]前缀 + 内容的格式,不需要做匹配失败的兜底处理,可将代码简化为:
const extractedIds = productArray.map(item => Number(item.match(/\[(\d+)\]/)[1]));
注意:如果字符串内方括号和数字之间存在空格(例如
[ 44 ]Medicine),可以将正则调整为/\[\s*(\d+)\s*\]/,兼容带冗余空格的格式。
纯字符串截取方案(不使用正则)
如果不想引入正则语法,可以通过定位方括号索引、截取中间内容的方式提取数字:
const extractedIds = productArray.map(item => { const leftBracketIdx = item.indexOf('['); const rightBracketIdx = item.indexOf(']'); if (leftBracketIdx === -1 || rightBracketIdx === -1 || rightBracketIdx <= leftBracketIdx) return null; return Number(item.slice(leftBracketIdx + 1, rightBracketIdx)); });
内容的提问来源于stack exchange,提问作者Fokrule
相关产品推荐
相关产品推荐

