Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-创建和访问自己的数据集(数组/对象)_Javascript_Arrays - Fatal编程技术网

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

Javascript-创建和访问自己的数据集(数组/对象),javascript,arrays,Javascript,Arrays,我正在寻找一种处理谷歌地图标记的好方法 我需要做的是,将标记存储在数组(或对象)中,并能够使用键(marker_1)对它们进行寻址,还能够遍历整个数组并访问所有元素,以从映射中删除它们 目前我有: var markers = []; // global | was using var markers = {}; earlier // and i add elemtnts like this () markers[elementid] = { lat: varlat, lng:

我正在寻找一种处理谷歌地图标记的好方法

我需要做的是,将标记存储在数组(或对象)中,并能够使用键(marker_1)对它们进行寻址,还能够遍历整个数组并访问所有元素,以从映射中删除它们

目前我有:

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]);
}
根本不起作用

为什么我不能像在PHP中那样创建、遍历和访问数组\

尝试使用:

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);

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

这似乎也不可行。它就像它的数组,但完全没有键。它甚至不启动迭代;到var标记={};我能最终以某种方式得到元素的数量吗?仅仅因为它的定义并不意味着它有内容,你确定你“在里面放了一些东西”吗?是的,我是:但是,我怀疑它的数组或对象。如果elementid是字符串(比如你有“markers_1”作为例子),那么markers必须是一个对象,初始化为
={}
,而不是数组。数组仅在数字上建立索引。对于对象,不使用
.length
,要迭代对象的属性,请使用MasqueradeCurus的示例。
var array = [];

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

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

console.log(array.length);