Javascript多维数组:对象被替换
我有一个函数,应该在二维数组中指定一个对象。不知何故,赋值会覆盖数组中的上一个对象Javascript多维数组:对象被替换,javascript,arrays,object,multidimensional-array,Javascript,Arrays,Object,Multidimensional Array,我有一个函数,应该在二维数组中指定一个对象。不知何故,赋值会覆盖数组中的上一个对象 var markersN = {}; var markersNArray = [] function addMarkerN(lat, lng, id, name, key) { markersN[key] = {}; var newMark = new google.maps.Marker({ /*marker properties*/ }); markersNA
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
(
[1] => { /*marker object*/ }
)
)
我做错什么了吗?如何防止函数覆盖数组中的上一个对象
谢谢。您正在分配markersN[key]={};在addMarkerN函数中,因此每次调用此函数时,分配给空数组的markersN[key]值将删除函数中写入的这一行
markersN[key] = {};
每次使用以前使用过的密钥调用addMarker时,您都会覆盖markersN[key]。检查makersN中给定密钥的条目是否已经存在,只有在不存在的情况下才进行初始化
if (typeof markersN[key] === 'undefined') {
markersN[key] = {};
}
最好提供一些sekolah的示例数据,这样我们就不会对结构产生任何干扰。啊,我没有注意声明。非常感谢,这解决了问题:
if (typeof markersN[key] === 'undefined') {
markersN[key] = {};
}