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

如何将字符串转换为对象数组?

字符串转指定对象数组的实现方案

这问题我之前处理类似格式的字符串时也碰到过,其实把需求拆解成几个小步骤就很容易实现了,直接上代码和详细解释:

实现代码

let str = "{SPOT:0,0:10,1:0},{SPOT:1,0:5,1:5}";

// 1. 拆分出单个对象的字符串片段
const objStringSegments = str.slice(1, -1).split('},{');

// 2. 将每个片段转换为目标对象并组装成数组
const result = objStringSegments.map(segment => {
  // 拆分键值对
  const keyValuePairs = segment.split(',');
  const targetObj = {};
  
  keyValuePairs.forEach(pair => {
    // 拆分键和值
    const [key, value] = pair.split(':');
    // 值转为数字类型,键直接保留原格式(对应目标里的"0"、"1"字符串键)
    targetObj[key] = Number(value);
  });
  
  return targetObj;
});

console.log(result);
// 输出结果:[{"SPOT":0,"0":10,"1":0},{"SPOT":1,"0":5,"1":5}]

步骤拆解

  • 第一步:拆分片段:用slice(1, -1)去掉字符串首尾的大括号,再用split('},{')把整个字符串分割成两个独立的对象字符串片段,得到["SPOT:0,0:10,1:0", "SPOT:1,0:5,1:5"]。
  • 第二步:转换为对象:遍历每个片段,先用split(',')拆成单个键值对,再对每个键值对用split(':')分离键和值,最后把值转为数字类型,赋值给对象对应的键,最终把所有对象收集到数组里。

更简洁的写法(用reduce)

如果喜欢更紧凑的代码,可以用reduce替代forEach来构建对象:

let str = "{SPOT:0,0:10,1:0},{SPOT:1,0:5,1:5}";

const result = str.slice(1, -1).split('},{').map(segment => 
  segment.split(',').reduce((obj, pair) => {
    const [key, val] = pair.split(':');
    obj[key] = Number(val);
    return obj;
  }, {})
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:54:36