2011-05-03 100 views
6

我想存儲一個緯度/經度數組。我有我的網頁上這些輸入:在jQuery中創建對象數組

<input type="hidden" class="latitude" value="-12.3456" /> 
<input type="hidden" class="longitude" value="12.3456" /> 
<input type="hidden" class="latitude" value="98.7654" /> 
<input type="hidden" class="longitude" value="-98.7654" /> 

而且我把它們放入數組,像這樣:

var latitudes = $('.latitude').map(function() { return this.value; }).get(); 
var longitudes = $('.longitude').map(function() { return this.value; }).get(); 

但我想,這將是更好地將它們存儲在單個陣列爲對象,這樣我就可以說:

$.each(array, function (i, obj) { 
    alert(obj.Latitude); 
    alert(obj.Longitude); 
}); 

我怎麼能修改此創建對象的數組?

回答

6

我會用jQuery.map()

$.map(latitudes, function(lat, i) { 
    return {latitude:lat, longitude:longitudes[i]}; 
}); 
+0

很高興知道jQuery有一個地圖功能! – 2011-05-03 20:18:59

0

這是一種方式:

http://jsfiddle.net/95cga/

var longs=$(".longitude"); 
var lats=$(".latitude"); 

var objs=[]; 

for(var i=0;i<Math.min(longs.length,lats.length);i++){ 
    var obj={ 
     "Latitude" : longs.eq(i).val(), 
     "Longitude" : lats.eq(i).val() 
    } 

    objs.push(obj); 
} 

我不喜歡假設的東西總是匹配對,即使他們應該的。這就是爲什麼Math.min在那裏。

2
var coords = []; 
$.each(latitudes, function(index, value) { 
    coords.push({'Latitude': value, 'Longitude': longitudes[index]}); 
});