2016-10-04 3 views
0

У меня есть следующий атрибут данных для каждого элемента в списке:Turn строка в массиве объектов

data-latlng="[{"lat":40.7713024, "lng":-73.9632393}]" 

Я могу превратить это в массив объектов, как

arr = $(this).data("latlng"); 

$.each(arr, function(index, value) { 
     coords.push({'details': value}); 
}); 

, а затем ссылаться на лат, например:

for(var i = 0; i < coords.length; i++){ 
    console.log(coords[i].details.lat); 
} 

Однако сейчас мне нужна дополнительная информация, как титул .. но теперь, когда его многомерным я не могу ссылаться на или получить доступ к нему больше .. Любые идеи ?!

data-latlng="[{title:"Johns place", location:{lat:40.7713024, lng:-73.9632393}}]" 

var coords = [ 
    {title: 'Johns place', location: {lat: 40.7713024, lng: -73.9632393}}, 
    {title: 'Jacks Loft', location: {lat: 40.7444883, lng: -73.9949465}}, 
]; 

ответ

1

Не знаю, почему у вас есть атрибут с адресом. Если вы использовали следующее, было бы легче получить доступ к широте и долготе:

data-latlng="[{“title”:"Johns place", “lat”:40.7713024, ”lng“:-73.9632393}]" 

В любом случае, ниже предлагается мое решение. Надеюсь, это поможет.

$('li').each(function() { 
 
arr = $(this).data("details")[0]; 
 
/* Not really needed actually 
 
coords = []; 
 
$.each(arr, function(index, value) { 
 
    coords[index] = value; 
 
}); 
 
*/ 
 
    $('#title').html(arr.title); 
 
    $('#latitude').html(arr.location.lat); 
 
    $('#longitude').html(arr.location.lng); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
<li data-details='[{"title":"Johns place", "location":{"lat":40.7713024, "lng":-73.9632393}}]'>Johns Place</li> 
 
</ul> 
 
<div id="title"> 
 
</div> 
 
<div id="location"> 
 
    <label>Location</label> 
 
    <span id="latitude"></span> 
 
    <span id="longitude"></span> 
 
</div>

+0

Спасибо дружище. Как бы вы отредактировали в js, если не в данных attr? Отдельный XML-файл? – Rich

+0

@Rich Извините за поздний ответ. Я думаю, что я был неясно ... мой плохой. Я имел в виду, что вместо того, чтобы помещать lat и lng в «местоположение», вы можете поместить эти атрибуты самостоятельно. – coffeeak

+0

Btw, я обновил код. Массив цепей не нужен, вы можете просто получить доступ к информации непосредственно из «arr» (в зависимости от ваших потребностей) – coffeeak

0

Правильная ваша строка JSON

{ 
    "coords": [{ 
     "title": "Johns place", 
     "location": [{ 
      "lat": 40.7713024, 
      "lng": -73.9632393 
     }] 
    }, { 
     "title": "Johns place", 
     "location": [{ 
      "lat": 40.7713024, 
      "lng": -73.9632393 
     }] 
    }] 
} 

код доступа

var latitude = data.coords.location[0].lat; 
console.log('Latitude : ', latitude); 

var longitude = data.coords.location[0].lng; 
console.log('Longitude : ', longitude); 
Смежные вопросы