2012-11-18 56 views
1

我试图让一个数组是这样的:如何声明数组双括号

var cell = [];  
cell[0][0] = "Förnamn:";  
cell[0][1] = "Efternamn:";  
cell[0][2] = "Telefon:";  
cell[1][1] = "Leitet";  
cell[1][2] = "7716";  
cell[2][0] = "Mats";  
cell[2][1] = "Loock";  
cell[2][2] = "7714"; 

但我得到这个错误:

Cannot set property '0' of undefined

我也试过这样:

var cell = new array[] 

并得到这个消息:

Unexpected token ]

并试用了此:

var cell = new array() 

但得到这个错误:

array is not defined

所以我需要帮助,我的声明变量。这一点很重要,下面的工作:

cell[0][0] = "Förnamn:"; 
cell[0][1] = "Efternamn:"; 
cell[0][2] = "Telefon:"; 
cell[1][0] = "Johan"; 
cell[1][1] = "Leitet"; 
cell[1][2] = "7716"; 
cell[2][0] = "Mats"; 
cell[2][1] = "Loock"; 
cell[2][2] = "7714"; 
+5

将问题标记为已解决的正确方法是接受答案。你可以在发布问题15分钟后做到这一点(即你已经可以做到了) –

回答

5
var a = new Array(); 
a[0] = new Array(); 

var a = [[]]; 

适用于您的情况:

// if you want to be explicit 
var cell = [] 
cell[0] = ["Förnamn:", "Efternamn:", "Telefon:"] 
cell[1] = ["Johan", "Leitet",  "7716" ] 
cell[2] = ["Mats",  "Loock",  "7714" ] 

// or 
var cell = [ 
    ["Förnamn:", "Efternamn:", "Telefon:"], 
    ["Johan", "Leitet", "7716"], 
    ["Mats", "Loock", "7714"] 
] 
+0

'new Array()'是推荐的编码方式,因为它有时候可能会“令人惊讶”。 –

2

像这样

var array = [[]]; 

文字应该用在JS中,而不是构造函数中。

0

JavaScript没有像C那样的2D数组。您可以通过使用一个数组的数组形式的模仿,就像这样:

var cell = []; 
for (var i = 0; i < 3; i++) { 
    cell[i] = []; 
} 


cell[0][0] = "Förnamn:"; 
cell[0][1] = "Efternamn:"; 
cell[0][2] = "Telefon:"; 
cell[1][0] = "Johan"; 
cell[1][1] = "Leitet"; 
cell[1][2] = "7716"; 
cell[2][0] = "Mats"; 
cell[2][1] = "Loock"; 
cell[2][2] = "7714"; 

阅读您的评论之后,让我怀疑,如果你的老师想是这样的:

var cell = [ // The outside array 
    [],  // this is cell[0] 
    [],  // cell[1] 
    []   // cell[2] 
];   // and closing the outside array 

压缩到一个线条是这样的:

var cell = [ [], [], [] ]; 
// or 
var cell = [[],[],[]]; 

或者,你可以创建我们所说的对象字面量并且只是说出你想要的...

var cell = [ 
    [ 
    "Förnamn:", 
    "Efternamn:", 
    "Telefon:" 
    ], 
    [ 
    "Leitet", 
    "7716" 
    ], 
    [ 
    "Mats", 
    "Loock", 
    "7714" 
    ] 
]; 
+0

嗯没关系。谢谢。将不得不与我的老师交谈,因为在描述问题时我必须这样声明:/。 – Yonnes

+0

@Yonnes - 用另一种可能性更新了我的答案。 –

0
var cell = [ 
    [ 
     "Förnamn:", 
     "Efternamn:", 
     "Telefon:" 
    ], 
    [ 
     "Leitet", 
     "7716" 
    ], 
    [ 
     "Mats", 
     "Loock", 
     "7714" 
    ] 
]; 
1

创建一个文本阵列的最简单方法是

var cell=[ 
    [ 
    "Förnamn:",   
    "Efternamn:", 
    "Telefon:" 
    ],[ 
    "Johan", 
    "Leitet", 
    "7716" 
    ],[ 
    "Mats", 
    "Loock", 
    "7714 
    ] 
] 

然后,当你想添加另一行,你可以做

cell.push(["John", "Dvorak", "3455"]) 

如果你真的想用

cell[0][0] = "Förnamn:";  
cell[0][1] = "Efternamn:";  
cell[0][2] = "Telefon:";  
cell[1][1] = "Leitet";  
cell[1][2] = "7716";  
cell[2][0] = "Mats";  
cell[2][1] = "Loock";  
cell[2][2] = "7714"; 

,那么这样做:

var cell=[]; 
cell[0]=[]; 
cell[1]=[]; 
cell[2]=[]; 

cell[0][0] = "Förnamn:";  
cell[0][1] = "Efternamn:";  
cell[0][2] = "Telefon:";  
cell[1][1] = "Leitet";  
cell[1][2] = "7716";  
cell[2][0] = "Mats";  
cell[2][1] = "Loock";  
cell[2][2] = "7714"; 

var cell = []; 

cell[0] = []; 
cell[0][0] = "Förnamn:";  
cell[0][1] = "Efternamn:";  
cell[0][2] = "Telefon:"; 
cell[1] = []; 
cell[1][1] = "Leitet";  
cell[1][2] = "7716"; 
cell[2] = []; 
cell[2][0] = "Mats";  
cell[2][1] = "Loock";  
cell[2][2] = "7714"; 
0

在第一个例子,你可以把它像这样工作:

var cell = [];  
cell[0] = []; 
cell[0][0] = "Förnamn:";  
cell[0][1] = "Efternamn:";  
cell[0][2] = "Telefon:";  
cell[1] = []; 
cell[1][1] = "Leitet";  
cell[1][2] = "7716";  
cell[2] = []; 
cell[2][0] = "Mats";  
cell[2][1] = "Loock";  
cell[2][2] = "7714"; 

在代码中的例外是抛出,因为没有cell[0] - 它是未定义的,所以你必须定义它第一。

一旦你使用数组构造函数,它应该是这样的:

var cell = new Array(); 

而不是:

var cell = new array[] 

var cell = new array(); 

首先建设是非法的,第二不因为JS是区分大小写的语言。但是在这里你会遇到第二级的问题。无论如何,每个第一级aray都必须定义,就像在第一个代码块中一样。