在Javascript中打印子数组的元素

在Javascript中打印子数组的元素,javascript,arrays,Javascript,Arrays,我不明白如何在Javascript中找到子数组的长度。下面是一个练习的示例: var table = [ ["Person", "Age", "City"], ["Sue", 22, "San Francisco"], ["Joe", 45, "Halifax"] ]; 我尝试使用以下for循环分别打印子数组的元素: for(person in table) { for(var i = 0; i < table[person].length;

我不明白如何在Javascript中找到子数组的长度。下面是一个练习的示例:

 var table = [
["Person",  "Age",  "City"],
["Sue",     22,     "San Francisco"],
["Joe",     45,     "Halifax"]
];
我尝试使用以下for循环分别打印子数组的元素:

for(person in table) {
    for(var i = 0; i < table[person].length; i++);
        console.log(table[person][i]);
}
是无效的语法,但

table.length 
有效且

table[person][i]

返回子索引表_person_i

中的元素。对于此任务,应使用嵌套的
for
循环:

for (var i = 0; i < table.length; i++) {
    for (var j = 0; j < table[i].length; j++) {
        console.log(table[i][j]);
    }
}
for(变量i=0;i
在您的示例中,您的数组是数组的数组。 获取人员姓名,并根据您的示例:

for (var i = 1; i < table.length; i++)
{
 console.log(table[i][0]); // first element of each sub array
}
for(变量i=1;i
试试这个:

for (var j = 0; j<table.length; j++) 
{
     //j(th) element of table array
     for (var i = 0; i < table[j].length; i++)
     {
         //i(th) element of j(th) element array
         console.log(table[j][i]);
     }
}

for(var j=0;j这是一个数组,不是一个对象,因此不能在循环中使用for/in循环。请改用常规的for循环

//for (person in table) {

for (var person = 1; person < table.length; person++) {
    for(var i = 0; i < table[person].length; i++)
    {
        console.log(table[person][i]);
    }
}
//用于(表中的人){
for(变量person=1;person
我可以向您保证
表[人].length
是有效的语法。为什么要用
for··································································r口译员?表[人].length是有效的,如果在名为table的对象中有一个名为person的数组。但这不是您所拥有的结构-上面描述的结构是对数组的误解,或者至少是使用数组的一种奇怪方式。嗯,有一些原因说明您不应该在数组中为…使用
。请参阅。这仅仅是因为Codecademy doesn不喜欢你的代码并不意味着它在语法上是无效的。@JAL:你把
表[person]
表['person']
混淆了
person
是一个包含值的变量,例如
“0”
“1”
,等等。所以你最终做的是
表[“0”].length
,与结构完全匹配。它获取
中第一个元素的长度。谢谢。这是可行的,但是有没有办法使用for(数组中的键){for(i=0;t对象一起使用
@chrisochsen或者您应该真正避免在数组上使用for-in,这将释放恶魔…和不可靠的数据(即迭代您不期望的数组对象的其他属性)@Lior我想这就是为什么会有Coffeescript。不过我还需要学习JS。谢谢。这很有效,但是有没有办法用for(数组中的键){for(I=0;tfor-in
循环,因此
for-in
名称唯一的问题是没有内部for循环来打印子数组中其他不100%正确的元素。您可以使用for…in循环(毕竟,数组也是对象),但不应该。
//for (person in table) {

for (var person = 1; person < table.length; person++) {
    for(var i = 0; i < table[person].length; i++)
    {
        console.log(table[person][i]);
    }
}