1

我从一个 php 文件生成了一些 javascript。在这个生成的代码中,我创建了一个多维数组,然后填充它。第一个嵌套数组填充没有问题,但第二个抛出 TypeError: myArray[idx] is undefined。

这是一个代码片段:

function initialize() {
                var arrayLabels = [];
                var arrayMarkers = [];
                var idx = 0;
                arrayMarkers[idx] = [];
                var mapLatlng = new google.maps.LatLng(40.6029248937, 7.7861327300);
                var mapOptions = { center: mapLatlng,
                    zoom: 13, 
                    mapTypeId: google.maps.MapTypeId.SATELLITE };
                var map = new google.maps.Map(document.getElementById("karte"), mapOptions);
                var bounds = new google.maps.LatLngBounds();
                    arrayMarkers[idx]['breite'] = 44.4114053473682;
                    arrayMarkers[idx]['laenge'] = 8.91858100891113;
                    arrayMarkers[idx]['farbe'] = "http://new.kfb.localhost:8888/img/ico/button2_gruen.png";
                    arrayMarkers[idx]['hafen'] = "Ab/bis Genua";
                    arrayMarkers[idx]['link'] = "Karte&#44; Wetter und<br>Landausfl&uuml;ge f&uuml;r<br><a href='hafen.php?hafen=172'>Genua</a><br>Sa, 16.03.13";
                    idx++;
                    arrayMarkers[idx]['breite'] = 43.3449053146323;

错误在索引增加后的最后一行引发。任何想法是什么问题?

谢谢 MK

4

2 回答 2

6

您正在递增idx,然后执行以下操作:

arrayMarkers[idx]['breite'] = 43.3449053146323;

您从未在 中放置任何对象arrayMarkers[idx],因此您最终尝试向 中添加属性undefined,这会导致错误。

如果要在新索引处创建数组,请添加此处显示的第二行:

idx++;
arrayMarkers[idx] = []; // <=== Add this
arrayMarkers[idx]['breite'] = 43.3449053146323;

旁注:您放入的东西arrayMarkers[idx]是数组([]),但您不是将它们用作数组,而是将它们用作对象。你可以在 JavaScript 中做到这一点(因为这些数组根本不是真正的数组),但除非你要利用它们是数组的事实,否则我只会使用对象:

arrayMarkers[idx] = {}; // Instead of []
于 2013-02-20T09:05:43.817 回答
0
idx++;
                    arrayMarkers[idx]['breite'] = 43.3449053146323;

应该

                    arrayMarkers[idx]['breite'] = 43.3449053146323;
idx++;

这样您就可以在所有操作完成后移至下一个索引。否则使用它们会将值增加到下一个不存在的索引

或者,如果它必须保持不变,那么您可以初始化该值,例如

idx++;
arrayMarkers[idx] = [];
arrayMarkers[idx]['breite'] = 43.3449053146323;
于 2013-02-20T09:05:38.500 回答