You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:09:03