簡體   English   中英

Javascript對象中的二維數組

[英]Two Dimensional Array in Javascript Object

我想創建一個在Javascript中包含一個或多個二維數組的對象。

我按以下方式嘗試過(在此示例中,我僅嘗試添加一個二維數組):

var XSIZE = 8;  
var YSIZE = 8;  
var obj = {  
 field : new Array(XSIZE),  
 field[0] : new Array(YSIZE),  
 foo : 1,  
 bar : 100  
}

信息:
-這給了我一個奇怪的錯誤“ missing:after property id”,這似乎沒有多大意義
-不幸的是,到目前為止,我還沒有找到示例來說明如何使用google來執行此操作
-如果我不添加field [0] ...來創建第二個數組,它將起作用。
-將XSIZE和YSIZE更改為類似於新Array(8)的數字...不起作用。

如果有人可以教我如何做或解釋為什么我根本不能做而需要使用其他方法,我將不勝感激。

非常感謝!

錯誤“缺少:屬性ID之后”是因為JavaScript看到field[0]field部分,並且在該字段的值之前需要冒號。 相反,它得到了一個開放的括號,所以它抱怨。

您不能對在運行時設置了維度的對象定義進行硬編碼。 您還必須在運行時構建對象。 這樣也許

var XSIZE = 8;  
var YSIZE = 8;

var obj = {  
 field : new Array(),  
 foo : 1,  
 bar : 100  
}

for (var i = 0; i < XSIZE; i++) {
  obj.field.push(new Array(YSIZE));
}

用對象文字表示法,屬性名稱必須完全是這樣:屬性名稱。 首先, field[0]不是屬性名稱。 其次,屬性直到定義的對象之后才存在,因此您直到那時才能訪問屬性。

您應該做的是在創建對象之后設置數組:

var obj = {...}
obj.field[0] = [...];

或嵌套數組文字:

var obj = {
    field: [ [...],
              ...
           ],
    ...
}

您不必擔心在創建數組時設置數組大小,因為添加元素時數組大小會增加。

您可以將二維數組作為obj屬性,而無需借助外部過程並將所有內容保留在對象內部。 第一個創建您的空“字段”數組。

var obj = {
field:[],

foo:1,
bar:100
};

現在,創建一個對象的方法,以從最初的無量綱數組中創建一個二維數組。 您可以在運行時根據需要確定多維數組的長度和維數:

var obj = {
field:[],
multifield:function(x,y){for (var count=0;count<x;count++)  {this.field[count]=new Array(y);}}, 

foo:1,
bar:100
};

然后,您可以調用obj.multifield方法,輸入您確定的任意尺寸:

obj.multifield(10,5); //-->create a 10x5 array in this case...

console.log(obj.field.length); // 10
 console.log(obj.field[0].length); // 5

您只能以這種方式在正在構造的對象上聲明屬性。 不在另一個“級別”中的對象上。

您可以改用for循環:

for(var i = 0; i < XSIZE; i++) {
  obj.field[i] = new Array(YSIZE);
}

請注意,由於空數組也可以正常工作( [] ),因此YSIZE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM