在Javascript中构建2D数组
我一直在尝试用javascript构建一个2D数组,但没有太大成功。我从数据库中提取一些数据,然后我想将一些字段合并到一个2D数组中,以便在代码中的其他地方使用它。理想情况下,我想要的结果是:在Javascript中构建2D数组,javascript,arrays,Javascript,Arrays,我一直在尝试用javascript构建一个2D数组,但没有太大成功。我从数据库中提取一些数据,然后我想将一些字段合并到一个2D数组中,以便在代码中的其他地方使用它。理想情况下,我想要的结果是: mapLocs = [ ['name a','location a',1], ['name b','location b',2], ['name c','location c',3] ] 下面是我用来构建mapLocs数组的代码: for(i = 0;i < pht
mapLocs = [
['name a','location a',1],
['name b','location b',2],
['name c','location c',3]
]
下面是我用来构建mapLocs
数组的代码:
for(i = 0;i < phtLen;i++){
var x = i + 1;
var myLocs = new Array(myPhotogs[i].phtName,myPhotogs[i].phtLoc,x);
console.log(myLocs);
mapLocs[i] = new Array(myLocs);
}
}
我期待的只有“乔·布洛格斯”和
console.logs(mapLocs[0][1]); // undefined
我做错了什么?显式new Array()构造函数不获取数组并使新数组与参数数组相同,而是获取希望包含在新数组中的参数列表。那就排队吧
mapLocs[i] = new Array(myLocs)
mapLocs[i]实际上被设置为
[[Joe Bloggs, SW1A 1AA, 1]]
相反,你可以说
mapLocs[i] = myLocs.slice()
这将克隆myLocs并将其放置在mapLocs中的索引i处,从而生成所需的输出 尝试更改
mapLocs[i]=新数组(myLocs)代码>至mapLocs[i]=myLocs代码>您也可以尝试mapLocs[i]=[myPhotogs[i].phtName,myPhotogs[i].phtLoc,x+1]
Ah!太棒了,真是太棒了!非常感谢你!您的代码从不声明mapLocs
。在for
循环之前,您需要如下内容:var-mapLocs=[]代码>。在您提供的内容中,还有一个额外的}
,它与缩进不匹配。这只是我剪切和粘贴的代码片段。mapLocs实际上是在其他地方声明的,额外的}被错误地复制了。我认为这是正确的,因为它是正确的(我尝试过),尽管我实际上在我的原始帖子的第一条评论中同意了这个建议。无论如何,谢谢!很高兴你找到了答案。
mapLocs[i] = myLocs.slice()