Javascript - 创建和访问自己的数据集(数组/对象)

时间:2014-05-25 14:25:49

标签: javascript arrays

我正在寻找一种处理googlemap标记的好方法。

我需要做的是在数组(或对象)中存储标记,并能够使用键(marker_1)对它们进行地址处理,并且还能够遍历整个数组并访问所有元素以从地图中取消它们。< / p>

目前我有:

var markers = []; // global | was using var markers = {}; earlier

// and i add elemtnts like this ()

markers[elementid] = {
    lat: varlat,
    lng: varlng',
    desc: vardesc,
    markerobj: markerobject
}

也许我甚至都不知道自己拥有什么。是阵列,是对象还是混合(从来没有找到任何好的资源来阅读这两者之间的差异)。

我可以在没有问题的情况下使用markers["marker_1"]语法访问它。 但是,那些不允许我循环遍历对象/数组:

console.log(markers.length);
// returns 0. but array is defined while debugging code in firebug
for(var i = 0; i < markers.length; i++){
    console.log(markers[i]);
}

$(markers).each(function(a,b){
    alert('works');
});

完全根本不起作用。

为什么我不能像PHP一样创建,遍历和访问数组? :\

2 个答案:

答案 0 :(得分:1)

尝试使用:

for(var i in markers){
    console.log(markers[i]);
}

也许你在覆盖一些东西。一个数组基于索引,因为你添加一个字符串作为索引立即成为一个对象,访问你的内容的唯一方法就像我放的例子。

这是证明它的另一个例子:

var array = [];

array.push('1');
array['hola'] = {hola: 'mundo'};

for (i in array)
    console.log(array[i]);

console.log(array.length);

答案 1 :(得分:0)

您必须通过for循环中的标记['marker _'+(i + 1)]访问,因为元素不能通过索引访问,而是通过其键访问。