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

JavaScript中如何将数组格式字符串转换为真实嵌套数组?

JS/React 数组格式字符串转嵌套数组实现方案

问题原因

直接使用string.split(",")失效的核心原因是:待处理字符串中同时存在两类逗号——子数组之间的分隔逗号、子数组内部IP与端口值的分隔逗号,简单按逗号全局拆分无法区分两类逗号的作用,最终会把子数组拆成零散的独立元素,无法得到预期的嵌套结构。

最优实现方案

你的原始字符串本质是缺失最外层中括号的标准JSON数组格式内容,只需要补全外层括号后直接调用原生JSON.parse即可得到结构完全符合预期的嵌套数组,React环境下可直接使用:

// 原始待转换字符串
const rawString = `[" 103.116.32.2",1225],[" 163.53.79.51",677],[" 103.116.32.30",651],[" 103.116.32.1",174],[" 10.6.27.6",40],[" 184.26.162.104",36],[" 184.26.162.97",35],[" 10.57.10.88",27],[" 172.16.59.56",24],[" 8.8.4.4",22],[" 103.116.32.26",18],[" 8.8.8.8",17],[" 103.116.32.14",16],[" 192.168.180.5",14],[" 216.239.35.0",10],[" 10.6.24.135",9]`;

// 补全外层中括号后解析
const newArray = JSON.parse(`[${rawString}]`);

该方案的优势:

  • 解析结果完全匹配预期嵌套结构,不会出现拆分错误
  • 原生API实现,无第三方依赖,执行效率高
  • 自动保留原始值类型:IP为字符串类型、端口号为数字类型,不需要额外做类型转换,也会完整保留IP前的原始空格

不规范格式兜底方案

如果原始字符串存在非标准JSON格式(比如使用单引号、存在多余尾逗号)导致JSON.parse报错,可以通过正则匹配所有子数组块后逐个解析:

const newArray = [];
// 匹配所有[开头、]结尾的子数组片段
const subArrayMatch = rawString.match(/\[[^\]]+\]/g);
if (subArrayMatch) {
  subArrayMatch.forEach(subItemStr => {
    // 若存在单引号等不规范格式,可在此处做替换处理后再解析
    newArray.push(JSON.parse(subItemStr.replace(/'/g, '"')));
  });
}

内容的提问来源于stack exchange,提问作者utpalbalse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:25:18