在JavaScript中访问多维数组

时间:2013-11-17 00:49:31

标签: javascript arrays

JavaScript问题:我想确认访问二维数组中元素的方法的正确性。在我发现的Knapsack问题的JS代码中,一个二维数组由

初始化
var data= [ {name:'map',     weight=9,   value:150, pieces:1},
        {name:'compass', weight:13,  value:35,  pieces:1},
        {name:'water',   weight:153, value:200, pieces:2} ];

稍后在代码中,索引j递增,代码通过

引用数组
data[j].name
data[j].weight
data[j].value
data[j].pieces

我认为这与使用索引

引用数组相同
data[j][1]
data[j][2]

这是对的吗?为了方便起见,我非常希望将字符串用作索引而不是索引。

我在24小时内看过Crockford的书(JS:The Good Parts)和Sam的JS,但他们并不清楚。我也看过网上但只是更加困惑。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用索引导航数组,然后通过点表示法导航对象:

data[0].name returns "map";
data[1].name returns "compass";

您无法通过索引访问对象属性,因为对象不是数组,并且没有索引,它们具有属性,因此您必须通过属性名称访问它们。

答案 1 :(得分:0)

示例数组中的元素是对象,但不是数组,所以我可能会称之为一维对象数组(除非您想将对象视为关联数组)。

无论如何,data[j][1]不适用于您的示例,因为data元素都不能被1编入索引。相反,请使用data[j].namedata[j]['name']

之类的内容

以下是我个人称之为二维数组,其中data[j][1]有意义:

var data = [ [1, 2, 3], ['a', 'b', 'c'] ];

...以及data[j][1]使用(非数组)对象数组工作的另一个例子:

var data = [ { 1: 'one' }, { 1 : 'uno' } ];