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

如何将JS中字符串形式的对象数组转换为普通对象数组?

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

完全可行,以下是几种具体实现方法:

方法1:使用eval()

这是最直接的方式,但仅适用于字符串来源完全可信的场景(避免代码注入风险):

const strArr = ['{lat:52.5159, lng:13.3777}', '{lat:37.773972, lng:-122.431297}', '{lat:39.916668, lng:116.383331}'];
const objArr = strArr.map(str => eval(`(${str})`));
// 输出目标数组
console.log(objArr);

注:给字符串包裹括号是为了让eval将其解析为对象表达式,而非代码块。

方法2:使用new Function()

和eval逻辑类似,但写法更灵活,同样需要注意字符串安全性:

const strArr = ['{lat:52.5159, lng:13.3777}', '{lat:37.773972, lng:-122.431297}', '{lat:39.916668, lng:116.383331}'];
const objArr = strArr.map(str => new Function(`return ${str}`)());
console.log(objArr);

方法3:手动正则解析(安全首选)

如果字符串格式固定为{lat:数字, lng:数字},推荐用这种无风险的方式,无需担心代码注入:

const strArr = ['{lat:52.5159, lng:13.3777}', '{lat:37.773972, lng:-122.431297}', '{lat:39.916668, lng:116.383331}'];
const objArr = strArr.map(str => {
  // 匹配lat后的数值
  const lat = parseFloat(str.match(/lat:([\d.-]+)/)[1]);
  // 匹配lng后的数值
  const lng = parseFloat(str.match(/lng:([\d.-]+)/)[1]);
  return { lat, lng };
});
console.log(objArr);

内容的提问来源于stack exchange,提问作者displayName is undefined

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:39:15