gpt4 book ai didi

javascript 将预先格式化的数组字符串转换为 js 中可用的数组

转载 作者:行者123 更新时间:2023-12-03 05:48:05 25 4
gpt4 key购买 nike

我希望这是一个简单的问题,尽管我可能从一开始就采取了错误的方式,所以让我解释一下。

当用户拖动/缩放 map 时,我正在谷歌地图上绘制多边形。因此,在拖尾/缩放更改时,我触发一个 javascript 方法,该方法调用一个 webAPI,该方法返回一个预先格式化为 javascript 数组格式的“字符串”(过去我们使用 <%= getdata() %> 来使用它,没有任何问题.

字符串通常很长,但这里只有 3 个点的示例:

"{lat: 36.206133, lng: -95.81533},{lat: 36.222298, lng: -95.814961},{lat: 36.22445, lng: -95.81527}"

现在,我清楚地看到发生了什么。我只是不知道如何解决它。它将它视为一个字符串,所以当我尝试时:

var 数组 = [ 数据 ]; (其中 data 是上面返回的字符串),它失败,因为它不是预期的坐标对象数组,而是字符串的单个成员数组。

所以......一个由两部分组成的问题:1,是否有更好的方法来做到这一点,如果没有,我如何将该“字符串”转换为坐标对象数组,就像直接键入一样到 JavaScript?

谢谢

最佳答案

正如 @jmesolomon 已经评论的那样,您可以/应该使用 JSON.parse为此。

但是,这需要输入字符串采用有效的 JSON 格式。目前情况并非如此,原因有二:

1) 对象的键不是“字符串”类型。 更改:用双引号将键括起来。

2) 响应实际上是一个以逗号分隔的对象列表,但未定义为数组,因为没有匹配的“[”+“]”标签。 更改:确保 WebAPI 通过添加“[”+“]”标签将响应格式化为实际的 JavaScript 数组。

示例:

var originalInput = "{lat: 36.206133, lng: -95.81533},{lat: 36.222298, lng: -95.814961},{lat: 36.22445, lng: -95.81527}";

var workingInput ='{"lat": 36.206133, "lng": -95.81533},{"lat": 36.222298, "lng": -95.814961},{"lat": 36.22445, "lng": -95.81527}';

var betterInput ='[{"lat": 36.206133, "lng": -95.81533},{"lat": 36.222298, "lng": -95.814961},{"lat": 36.22445, "lng": -95.81527}]';

console.log("workingInput", JSON.parse("[" + workingInput + "]"));
console.log("betterInput", JSON.parse(betterInput));

关于javascript 将预先格式化的数组字符串转换为 js 中可用的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40251276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com