Я хочу извлечь лат. и долготы из строки, например:

var data = "(-20.210696507479017, -70.14000177383423),(-20.21202551027535, -70.14246940612793),(-20.21385790460967, -70.14066696166992),(-20.21168319245841, -70.13901472091675)" 

Как я могу извлечь эти пары и поместить их в массив, если эти точки могут измениться в количестве?

Благодарность

1
user1913878 24 Янв 2013 в 21:47

2 ответа

Лучший ответ

Разделите пары, затем разделите каждую пару и проанализируйте значения. Это создает массив объектов, которые имеют свойства 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]) };
}

Демонстрация: http://jsfiddle.net/Guffa/EV2h4/

1
Guffa 24 Янв 2013 в 17:53

Почему бы не преобразовать его в массив строк 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]);

изменить x + = 2, хороший улов Ифта

0
Louis Ricci 24 Янв 2013 в 18:34