Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Object_Multidimensional Array - Fatal编程技术网

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] = {};
}