数组内部的Javascript数组 – 如何调用子数组名称

这是我正在做的事情的例子:

var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 

我正在做一个循环选择forms的东西,它工作正常,但我想获取数组子名称,在这种情况下 – 大小或颜色。 当我正在做警报(选项[0])时,我得到了数组的整个元素,但是对于某些特定情况,我想只得到数组名称,这就像我已经说过的那样是大小/颜色。 有没有办法实现这一目标? 谢谢

我会创建一个这样的对象:

 var options = { size: ["S", "M", "L", "XL", "XXL"], color: ["Red", "Blue", "Green", "White", "Black"] }; alert(Object.keys(options)); 

单独访问密钥:

 for (var key in options) { alert(key); } 

PS:当你创建一个新的数组对象时,不要使用new Array array而是使用[]

你可以使用这样的key

 var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array(size, color); var len = options.length; for(var i = 0; i 

看到这里: http : //jsfiddle.net/8hmRk/8/

无法知道options数组的两个成员来自名为sizecolor变量。

它们也不一定是专门调用的,任何变量也可以指向该数组。

 var notSize = size; console.log(options[0]); // It is `size` or `notSize`? 

你可以做的一件事就是在那里使用一个物体……

 var options = { size: size, color: color } 

然后你可以访问options.sizeoptions.color

你不能。 该数组没有名称。

您只有两个对数组的引用,一个在变量中,另一个在第三个数组中。

无法找到给定对象存在的所有引用。

如果名称很重要,则将其与数据一起存储。

 var size = { data: ["S", "M", "L", "XL", "XXL"], name: 'size' }; var color = { data: ["Red", "Blue", "Green", "White", "Black"], name: 'color' }; var options = [size, color]; 

显然你必须修改访问数据的现有代码(因为你现在有options[0].data[0]而不是options[0][0]但你也有options[0].name )。

是的。 您可以使用

 alert(options[0][0]) 

得到“S”的大小

要么

 alert(options[0][1]) 

得到颜色“红色”

你已经创建了一个数组数组(多维),因此在这种情况下,options [0]是size数组。 你需要引用孩子的第一个元素,对你来说是:options [0] [0]。

如果您想循环遍历所有条目,可以使用此处描述的for .. in ...语法。

 var a = [1,2,4,5,120,12]; for (var val in t) { console.log(t[val]); } var b = ['S','M','L']; var both = [a,b]; for (var val in both) { for(val2 in both[val]){console.log(both[val][val2])} } 

在这种情况下,您不希望在数组中插入sizecolor ,而是插入对象

 var options = { 'size': size, 'color': color }; 

之后,您可以通过访问密钥集

 var keys = Object.keys( options ); 

数组就像任何其他对象一样。 如果你愿意,你可以给它一个名字。

 var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); color.name = "color"; size.name = "size"; options[0].name == "size" >true