如何用JavaScript高效将非标准JSON字符串转换为JSON对象数组
JavaScript 高效转换方案
核心思路
输入字符串规律为固定每2个键值对(key、age各1个)组成一个对象单元,我们可以通过一次全局正则匹配拿到所有键值对,再按规则分组组装,全程仅做2次线性遍历,时间复杂度为O(n),性能最优。
实现代码
function strToObjArr(str) { // 全局匹配所有 键=值 结构 const reg = /(\w+)=('?[^',]+'?)/g const result = [] let tempObj = {} let match while ((match = reg.exec(str)) !== null) { const [, key, rawVal] = match // 处理值:去掉单引号,数字转数值类型 const val = rawVal.startsWith("'") ? rawVal.slice(1, -1) : Number(rawVal) tempObj[key] = val // 每凑齐两个属性就存入结果,重置临时对象 if (Object.keys(tempObj).length === 2) { result.push(tempObj) tempObj = {} } } return result } // 测试用例 const inputStr = "key='jio3298', age=24, key='oijf032', age=62" console.log(strToObjArr(inputStr)) // 输出:[ { key: 'jio3298', age: 24 }, { key: 'oijf032', age: 62 } ]
效率说明
- 避免了多次
split切割字符串产生的额外性能开销和中间数组 - 正则单次扫描即可提取所有有效字段,遍历组装过程无冗余操作
- 适配后续过滤需求:拿到结果数组后可直接用
Array.filter做条件过滤,无需额外转换
内容的提问来源于stack exchange,提问作者Juan Carlos Tremols
相关产品推荐
相关产品推荐

