Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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,我有一个Java脚本数组,如下所示: -第一个元素是字符串 -第二个元素是数组 --第一个元素是字符串 --第二个元素是数组 ---第一个元素是字符串 ---第二个元素是数组 : : 实际上,这一级别将达到5级 photoList = [Photographs, [ [2000, [ [London, [pic1.jpg, pic2.jpg, pic3.jpg]],

我有一个Java脚本数组,如下所示: -第一个元素是字符串 -第二个元素是数组 --第一个元素是字符串 --第二个元素是数组 ---第一个元素是字符串 ---第二个元素是数组 : : 实际上,这一级别将达到5级

photoList = 
    [Photographs, [
                    [2000, [
                             [London, [pic1.jpg, pic2.jpg, pic3.jpg]],
                             [Rome,   [p1.jpg, p2.jpg, p3.jpg....]]
                           ]],
                    [2001, [
                             [Berlin, [x1.jpg, x2.jpg,....]],
                             [Munich, [y1.jpg, y2.jpg, y3.jpg,...]],
                             [Frankfurt, [z1.jpg, z2.jpg]]
                           ]]
                  ]
    ];
我知道所选照片的路径(索引值存储在数组“path”中) 示例[1][0][1][2]是2000年->罗马->p3.jpg

知道这些索引值后,如何访问p3? 在代码中,我形成了一个字符串变量:var index=“[1][0][1][2]”。 现在我需要做一些类似的事情: 照片列表+索引 我尝试了eval(照片列表+索引),但它不起作用。 我还尝试使用循环,使用切片:

var elem = photoList;
for (var i=0; i<path.length; i++) {
  elem = elem.slice(path[i], path[i+1];
}
var elem=照片列表;

对于(var i=0;i为什么不执行以下操作(假设路径是一个索引数组,例如[1,0,1,2]):

var elem=照片列表;

对于(var i=0;i为了评估photoList+索引,您需要它将photoList作为字符串传递给eval,因此
eval(“photoList”+索引)
将起作用。

可能重复
console.log(photoList[1][0][1][2])
。现在
console.log(photoList[1][0][1][1][2])
。这有许多不平衡的方括号:
[
16次,而
]
只有10次。因此,不清楚您真正的意思。因此,此评论的其余部分可能不准确。
[1][0][1][2]
不应该是
[1][0][1][1][2]
吗?您从哪里获得此数据结构的?您应该使用对象,而不仅仅是数组。类似这样的内容:
photoList={photos:{'2000':{伦敦:['pic1.jpg','pic2.jpg','pic3.jpg',罗马:['p1.jpg','p2.jpg','p3.jpg','p3.jpg','2001':{柏林:[…],慕尼黑:[…],法兰克福:[…]};
那么带有德拉斯科·科基奇答案的数组将是
['photos','2000','Rome',2]
。我不得不用上面键入的内容替换我的真实数据,并且可能引入了不匹配的括号。但我已尝试更正它,但我希望您了解数据结构的概念,一个分层的照片列表,由城市在一年内安排。是的,现在可以了!我以前尝试过,但有其他东西把它弄乱了。Tha谢谢!我知道你的意思。通常是一些小细节导致了问题。这是另一双眼睛可以帮助的地方;-)如果你能接受我的回答,我将不胜感激。在我获得15分的声誉之前,我不能提高任何分数。但我希望我达到这个水平后会回来。哦,好吧。但你肯定能接受你问题的答案,对吧?我以为接受答案就是提高分数。你还有什么要我做的吗?写一封信e“我接受这个答案”?请告诉我。是的,确实如此!!我比下面的循环解决方案更喜欢这个。虽然我仍然循环形成索引字符串,但我不会循环提取数组元素。使用
eval
(或者我喜欢称之为“邪恶”)被广泛劝阻。请找到一个更好的方法。同意-eval不是理想的方法。我不确定这个解决方案的坏处是什么。eval参数中的任何一个值都不是从UI获得的,因此没有用户注入恶意代码。也许如果它是如此邪恶,它应该完全从Javascript中删除…啊!但这是有充分理由的你说要保留它,但上述类型的解决方案不是其中之一吗?
var elem = photoList;
for (var i=0; i<path.length; i++) {
  elem = elem[path[i]];
}