Jquery 如何将谷歌地图多边形的坐标对从字符串转换为数组?

Jquery 如何将谷歌地图多边形的坐标对从字符串转换为数组?,jquery,arrays,google-maps-api-3,Jquery,Arrays,Google Maps Api 3,我有一组坐标对,如下所示: var path = { lat: 41.51663913751271, lng: -72.42501842191292}q{ lat: 41.522808462596736, lng: -72.33163463285042}q{ lat: 41.44410551903285, lng: -72.31996165921761}q{ lat: 41.43484006513872, lng: -72.41540538480355}q{ lat: 41.4847549227

我有一组坐标对,如下所示:

var path = { lat: 41.51663913751271, lng: -72.42501842191292}q{ lat: 41.522808462596736, lng: -72.33163463285042}q{ lat: 41.44410551903285, lng: -72.31996165921761}q{ lat: 41.43484006513872, lng: -72.41540538480355}q{ lat: 41.48475492271096, lng: -72.36665355374886}, 
var coordinates = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
    { lat: 25.774, lng: -80.19 },
  ];
我需要让它看起来像这样:

var path = { lat: 41.51663913751271, lng: -72.42501842191292}q{ lat: 41.522808462596736, lng: -72.33163463285042}q{ lat: 41.44410551903285, lng: -72.31996165921761}q{ lat: 41.43484006513872, lng: -72.41540538480355}q{ lat: 41.48475492271096, lng: -72.36665355374886}, 
var coordinates = [
    { lat: 25.774, lng: -80.19 },
    { lat: 18.466, lng: -66.118 },
    { lat: 32.321, lng: -64.757 },
    { lat: 25.774, lng: -80.19 },
  ];
我可以完全控制初始字符串,以便更改格式、分隔符等。 我所尝试的:

var polyCoords = path.split('q'); 
这导致并且不是我所需要的:

["{ lat: 41.51663913751271, lng: -72.42501842191292}", "{ lat: 41.522808462596736, lng: -72.33163463285042}", "{ lat: 41.44410551903285, lng: -72.31996165921761}", "{ lat: 41.43484006513872, lng: -72.41540538480355}", "{ lat: 41.48475492271096, lng: -72.36665355374886}", ""]
我也尝试过JSON.parsepath;但这显示了语法错误

此外,如果有帮助的话,这就是我当前如何将坐标捕获为字符串的方式:

polygon_boundary_coordinates += "{ lat: " + currentPolygon.getPath().getAt(i).lat() + ", lng: " + currentPolygon.getPath().getAt(i).lng() + "}q";

您有什么建议吗?

拆分后,会产生一个字符串化JSON数组和一个冗余的空字符串,您只需再执行两个步骤,过滤掉空字符串,然后映射并解析每个过滤后的元素

var polyCoords = path
  .split('q')
  .filter(Boolean)
  .map(coord => JSON.parse(coord))
最后但并非最不重要的一点是,在上述内容之前,最重要的一点是让字符串化JSON的属性用引号括起来,以获得正确的JSON.parse

常量拆分=[ “{lat:41.51663913751271,lng:-72.42501842191292}”, “{lat:41.522808462596736,lng:-72.33163463285042}”, “{lat:41.44410551903285,lng:-72.31996165921761}”, “{lat:41.43484006513872,lng:-72.41540538480355}”, “{lat:41.48475492271096,lng:-72.36665355374886}”, , ]; const coordinates=splited.filterBoolean.mapcoord=>JSON.parsecoord;
控制台。日志坐标 你可以这样做。 有些零件取自

我将对此进行分解,并解释为什么需要每个部分

path.replace/,\s*$/

这将从初始数据中删除尾随逗号

.splitq

拆分为字符串数组

映射将对数组中的每个元素执行操作

当前替换/[']?[a-z0-9A-Z!]+[']?:/g,$2:'

这是必需的,因为在初始字符串的键周围没有双引号,否则它不会进行解析


注:hbg123的答案将起作用,但前提是您可以获得键周围的引号。否则,调用JSON.parse时会出现错误。

非常感谢。我要花一段时间才能弄明白这一切。我对json.parse不够熟悉。