我有一个问题,这不是我以前用过的东西。
这是代码的片段。
//Defined at top of file
var ships_array = [];
//Function later on
function refreshJSON(){
$.getJSON("scripts/getJSON.php", function(json){
if(json){
$.each(shiplist,function(i,item){
$.each(item,function(j,subitem){
var mmsi = subitem['mmsi'];
ships_array[mmsi].lat = subitem['lat'];
ships_array[mmsi].lon = subitem['lon'];
});
});
}
});
}
我得到的错误是
ships_array [mmsi]未定义[Break 在此错误] ships_array [mmsi] .lat = 子项[ 'LAT'];
这是使用关联数组的正确方法吗?我见过类似的例子,但我在某个地方出错了!最后,我想要一系列Google Maps标记!
答案 0 :(得分:3)
你只需要首先在哈希键上初始化值
var mmsi = subitem['mmsi'];
ships_array[mmsi] = ships_array[mmsi] || {};
ships_array[mmsi].lat = subitem['lat'];
ships_array[mmsi].lon = subitem['lon'];
答案 1 :(得分:1)
您可以像这样更改代码:
//Defined at top of file
var ships_array = [];
//Function later on
function refreshJSON(){
$.getJSON("scripts/getJSON.php", function(json){
if(json){
$.each(shiplist,function(i,item){
$.each(item,function(j,subitem){
var mmsi = subitem['mmsi'];
ships_array[mmsi] = {lat: subitem['lat'], lon:subitem['lon']};
});
});
}
});
}