关联Javascript数组

时间:2011-03-14 07:37:27

标签: javascript arrays

我有一个问题,这不是我以前用过的东西。

这是代码的片段。

//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标记!

2 个答案:

答案 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']};
            });
        });
     } 

    });

    }