我有一个函数应该在二维数组中分配一个对象。不知何故,赋值会覆盖数组中的前一个对象。
var markersN = {};
var markersNArray = []
function addMarkerN(lat, lng, id, name, key) {
markersN[key] = {};
var newMark = new google.maps.Marker({
/*marker properties*/
});
markersNArray.push(newMark); //This pushes every object to a one dimensional array just fine
markersN[key][id] = newMark; //This replaces the previous object in the markersN[key] array
}
这就是我调用函数的方式:
for(var j=0; j<sekolah[i].nonlat.length; j++){
addMarkerN(sekolah[i].nonlat[j], sekolah[i].nonlon[j], j, sekolah[i].nonname[j], sekolah[i].key);
}
这就是我想要的数组:
Array
(
[0] => Array
(
[0] => { /*marker object*/ }
[1] => { /*marker object*/ }
)
)
这就是它的结果:
Array
(
[0] => Array
(
[1] => { /*marker object*/ }
)
)
我在这里做错了吗?如何防止该函数覆盖数组中的上一个对象?
谢谢。
答案 0 :(得分:0)
您在addMarkerN函数中分配markersN[key] = {};
,因此每次调用此函数时,分配给空数组的markersN[key]
值
答案 1 :(得分:0)
删除在函数内写入的这一行
markersN[key] = {};
答案 2 :(得分:0)
每次使用之前使用过的密钥调用addMarker时,都会覆盖markerN [key]。检查给定密钥的makerN中是否存在条目,并且只有在不是这种情况时才进行初始化。
if (typeof markersN[key] === 'undefined') {
markersN[key] = {};
}