0

到目前为止,我得到了:

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);     // ^^

这个数组可以工作吗?我对编程相对较新,我的朋友建议我应该这样做,但我环顾四周,其他任何地方都推荐一种更复杂的方法,如果他们解释它可能是有意义的。如果这个数组可以工作,请告诉我到目前为止我将如何访问第二个数组中的值以访问 wolf fur 的第一个统计数据 我得到了这个:

var example = Items.2.1

这(^^)会起作用吗?

如果它不起作用,请告诉我如何使用示例中的上述名称来执行此操作,并解释您为什么要做所有您所做的事情以及它做了什么。谢谢。

我现在使用一个对象,我得到了:

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 知道哪个是哪个

4

3 回答 3

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]上面相同。

于 2013-02-09T08:38:52.747 回答
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,并且通过警报示例,您可以访问项目

于 2013-02-09T08:38:08.543 回答
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 对象非常灵活,我建议您花一些时间真正了解它们。

于 2013-02-09T08:41:37.480 回答