Javascript 从可变长度字符串中提取lat、lng

Javascript 从可变长度字符串中提取lat、lng,javascript,jquery,Javascript,Jquery,我想从如下字符串中提取纬度和经度VAL: var data = "(-20.210696507479017, -70.14000177383423),(-20.21202551027535, -70.14246940612793),(-20.21385790460967, -70.14066696166992),(-20.21168319245841, -70.13901472091675)" 如果这些点的数量可能发生变化,我如何提取这些点对并将其推入数组 谢谢拆分这些对,然后拆分每对并解析

我想从如下字符串中提取纬度和经度VAL:

var data = "(-20.210696507479017, -70.14000177383423),(-20.21202551027535, -70.14246940612793),(-20.21385790460967, -70.14066696166992),(-20.21168319245841, -70.13901472091675)" 
如果这些点的数量可能发生变化,我如何提取这些点对并将其推入数组


谢谢

拆分这些对,然后拆分每对并解析值。这将生成一个对象数组,这些对象的
lat
lng
属性是数字:

var coors = data.split('),(');
for (var i = 0; i < coors.length; i++) {
  var c = coors[i].replace('(', '').replace(')', '').split(',');
  coors[i] = { lat: parseFloat(c[0]), lng: parseFloat(c[1]) };
}
var coors=data.split('),('); 对于(变量i=0;i
演示:

拆分对,然后拆分每对并解析值。这将生成一个对象数组,这些对象的
lat
lng
属性是数字:

var coors = data.split('),(');
for (var i = 0; i < coors.length; i++) {
  var c = coors[i].replace('(', '').replace(')', '').split(',');
  coors[i] = { lat: parseFloat(c[0]), lng: parseFloat(c[1]) };
}
var coors=data.split('),('); 对于(变量i=0;i
演示:

为什么不将其转换为json字符串数组,然后将其解析为对象

var data = "(-20.210696507479017, -70.14000177383423),(-20.21202551027535, -70.14246940612793),(-20.21385790460967, -70.14066696166992),(-20.21168319245841, -70.13901472091675)";
var arr = JSON.parse("[" + data.replace(/[)(]/g, "") + "]");
for(var x=0; x<arr.length-1; x+=2)
    console.log("lat " + arr[x] + ", lon " + arr[x+1]);
var data=“(-20.21069650479017,-70.14000177383423),(-20.21202551027535,-70.14246940612793),(-20.21385790460967,-70.14066696166992),(-20.21168319245841,-70.13901472091675)”;
var arr=JSON.parse(“[”+data.replace(/[)(]/g,”+“]);

对于(var x=0;x为什么不将其转换为json字符串数组,然后将其解析为对象

var data = "(-20.210696507479017, -70.14000177383423),(-20.21202551027535, -70.14246940612793),(-20.21385790460967, -70.14066696166992),(-20.21168319245841, -70.13901472091675)";
var arr = JSON.parse("[" + data.replace(/[)(]/g, "") + "]");
for(var x=0; x<arr.length-1; x+=2)
    console.log("lat " + arr[x] + ", lon " + arr[x+1]);
var data=“(-20.21069650479017,-70.14000177383423),(-20.21202551027535,-70.14246940612793),(-20.21385790460967,-70.14066696166992),(-20.21168319245841,-70.13901472091675)”;
var arr=JSON.parse(“[”+data.replace(/[)(]/g,”+“]);

对于(var x=0;x
JSON.parse('{coords:['+data.replace(/\(/g,'[').replace(/\)/g,']'))+']}')
非常类似于
非常类似于。您需要x+=2来处理对,而不是x++JSON解析在这里太过分了,如果删除括号,那么您就可以使用split(',')@Iftah-JSON.parse将允许将来进行更高级的处理,比如使用正则表达式替换并创建一个{lat:##,lon:##}数组对象。使用JSON.parse还允许结果元素的类型为'number'而不是'string'。您需要x+=2来处理对,而不是x++JSON解析在这里过于复杂,如果删除括号,则可以使用split(','))@Iftah-JSON.parse将允许将来进行更高级的破坏,比如使用regex replace并创建一个{lat:##,lon:##}对象数组。使用JSON.parse还允许生成的元素类型为'number'而不是'string'。