这个二维数组可以工作吗?

时间:2013-02-09 08:31:06

标签: javascript arrays multidimensional-array

到目前为止我已经:

var Items = new Array(5); // this array contains the items
BodyPaint = new Array(1, 0, 1, 0, 0, 0, 0, 0, 0);  // this array gives stats for the item
WolfFur = new Array(3, 0, 1, 0, 0, 0, 0, 0, 0);       // ^^
BearFur = new Array(4, 0, 1, 0, 0, 0, 0, 0, 0);       // ^^
WolfSkin = new Array(6, 0, 0, 0, 0, 0, 0, 0, 0);     // ^^
BearSkin = new Array(7, 1, 0, 0, 0, 0, 0, 0, 0);     // ^^

这个阵列会起作用吗?我相对较新的编程和我的朋友建议这是我应该怎么做,但我环顾四周,其他地方推荐一种更复杂的方式,这可能有意义,如果他们解释它。 如果这个数组工作,请告诉我如何访问第二个数组中的值 到目前为止,访问狼皮毛的第一个数据我得到了这个:

var example = Items.2.1

这会(^^)有效吗?

如果它不起作用,请告诉我如何使用示例中的上述名称并解释为什么你做你做的一切以及它做了什么。 THX。

我现在正在使用一个物体,我得到了:

var Items = {
    BodyPaint : new Array(1, 0, 1, 0, 0, 0, 0, 0, 0),
    FurCloak : new Array(3, 0, 1, 0, 0, 0, 0, 0, 0),
    WolfSkin : new Array(5, 0, 0, 0, 0, 0, 0, 0, 0)};

还有更多阵列但我在这里结束了它以节省空间 我收到以下错误: 未知标识符:BodyPaint 未知标识符:FurCloak 未知标识符:WolfSkin 以及我所有其他阵列 如果我用一个数字替换一个错误的名字,但它不能对代码好,我真的不希望我的项目在这里被称为数字,我不能2知道哪个是哪个

3 个答案:

答案 0 :(得分:2)

没有。这不是你从数组中获取值的方式。

如果您的数组是这样的话,

Items[2][1]会起作用;

var BodyPaint = new Array(1, 0, 1, 0, 0, 0, 0, 0, 0);  // this array gives stats for the item
var WolfFur   = new Array(3, 0, 1, 0, 0, 0, 0, 0, 0);       // ^^
var BearFur   = new Array(4, 0, 1, 0, 0, 0, 0, 0, 0);       // ^^
var WolfSkin  = new Array(6, 0, 0, 0, 0, 0, 0, 0, 0);     // ^^
var BearSkin  = new Array(7, 1, 0, 0, 0, 0, 0, 0, 0);     // ^^
Items = [BodyPaint, WolfFur, BearFur, WolfSkin, BearSkin];

Items[2][1]将返回0.


编辑:您可能也有兴趣使用对象。

var Items = {
     BodyPaint: new Array(1, 0, 1, 0, 0, 0, 0, 0, 0),
     WolfFur:   new Array(3, 0, 1, 0, 0, 0, 0, 0, 0),
     BearFur:   new Array(4, 0, 1, 0, 0, 0, 0, 0, 0),
     WolfSkin:  new Array(6, 0, 0, 0, 0, 0, 0, 0, 0),
     BearSkin:  new Array(7, 1, 0, 0, 0, 0, 0, 0, 0)
}

这将允许您编写如下代码:

Items.BearFur[1]将返回0并与上面的Items[2][1]相同。

答案 1 :(得分:0)

您只有多个1D数组,您应该将它们组合成2D,例如:

var Items = new Array
BodyPaint = new Array(1, 0, 1, 0, 0, 0, 0, 0, 0);
WolfFur = new Array(3, 0, 1, 0, 0, 0, 0, 0, 0);
BearFur = new Array(4, 0, 1, 0, 0, 0, 0, 0, 0);
WolfSkin = new Array(6, 0, 0, 0, 0, 0, 0, 0, 0);
BearSkin = new Array(7, 1, 0, 0, 0, 0, 0, 0, 0);

Items[0] = BodyPaint;

alert(Items[0][2]);

在这种情况下,您拥有2D,并且使用警报示例您可以访问项目

答案 2 :(得分:0)

它不起作用,因为您没有以任何方式将Items链接到任何其他数组。你必须写:

var BodyPaint = new Array(1, 0, 1, 0, 0, 0, 0, 0, 0);
var WolfFur = new Array(3, 0, 1, 0, 0, 0, 0, 0, 0);
var BearFur = new Array(4, 0, 1, 0, 0, 0, 0, 0, 0);
var WolfSkin = new Array(6, 0, 0, 0, 0, 0, 0, 0, 0);
var BearSkin = new Array(7, 1, 0, 0, 0, 0, 0, 0, 0);
var Items = new Array(BodyPaint, WolfFur, BearFur, WolfSkin, BearSkin);

然后这会起作用:

var example = Items[2][1];

我建议您使用JavaScript对象而不是数组。在JSON中,这将是:

var Items = {
   BodyPaint : Array(1, 0, 1, 0, 0, 0, 0, 0, 0),
   WolfFur : new Array(3, 0, 1, 0, 0, 0, 0, 0, 0),
   BearFur : new Array(4, 0, 1, 0, 0, 0, 0, 0, 0),
   WolfSkin : new Array(6, 0, 0, 0, 0, 0, 0, 0, 0),
   BearSkin : new Array(7, 1, 0, 0, 0, 0, 0, 0, 0)};

然后您可以添加以下新项目:

Items.AnotherItem = new Array(8, 0, 0, 0, 0, 0, 0, 0, 0);

或者:

Items['AnotherItem'] = new Array(8, 0, 0, 0, 0, 0, 0, 0, 0);

获得如下财产:

var example = Items.WolfSkin[5];

JavaScript对象非常灵活,我建议您花些时间真正了解它们。