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,但他们并不清楚。我也看过网上但只是更加困惑。谢谢你的帮助。
答案 0 :(得分:0)
您可以使用索引导航数组,然后通过点表示法导航对象:
data[0].name returns "map";
data[1].name returns "compass";
您无法通过索引访问对象属性,因为对象不是数组,并且没有索引,它们具有属性,因此您必须通过属性名称访问它们。
答案 1 :(得分:0)
示例数组中的元素是对象,但不是数组,所以我可能会称之为一维对象数组(除非您想将对象视为关联数组)。
无论如何,data[j][1]
不适用于您的示例,因为data
元素都不能被1
编入索引。相反,请使用data[j].name
或data[j]['name']
。
以下是我个人称之为二维数组,其中data[j][1]
有意义:
var data = [ [1, 2, 3], ['a', 'b', 'c'] ];
...以及data[j][1]
使用(非数组)对象数组工作的另一个例子:
var data = [ { 1: 'one' }, { 1 : 'uno' } ];