2016-07-27 38 views
0

我做了數組是這樣的:多維陣列顯示

var multiarray = { 

    cat:{ 
     name:'hellokitty', 
     legs:4 
    }, 
    dog:{ 
     name:'fred', 
     legs:4 
    } 
}; 

我只想顯示,貓,狗等。像這樣 console.log(multiarray[0]) => cat。 但它不起作用。

貓和狗是一種身份證。我想在多維對象數組中顯示id。

+2

這是與屬性的對象,它不是一個數組。 –

+0

這裏'multiarray'是一個對象而不是數組。你可以使用'console.log(multiarray ['cat'])'來獲取內部'cat'對象。 –

回答

2

你想這樣的:

var multiarray = { 
 
    cat:{ 
 
    name:'hellokitty', 
 
    legs:4 
 
    }, 
 
    dog:{ 
 
    name:'fred', 
 
    legs:4 
 
    } 
 
}; 
 

 
console.log(Object.keys(multiarray)[0]); 
 
console.log(Object.keys(multiarray)[1]);

正如在評論中注意到,您的multiarray實際上是一個對象。

另一方面,Object.keys(multiarray)將返回一個數組:對象鍵的列表。

請注意,JavaScript不保證對象中的鍵(或「屬性」)順序。換句話說,你不應該假設'貓'會先來。

+1

非常感謝。 – Soo

+1

很高興你給出瞭解釋,我擔心它會留作* *「試試這個」*類型的答案。 –

1

正如前面注意到的其他用戶,multiarray變量實際上是Object的原型,而不是Array

var multiarray = { 
 

 
    cat:{ 
 
     name:'hellokitty', 
 
     legs:4 
 
    }, 
 
    dog:{ 
 
     name:'fred', 
 
     legs:4 
 
    } 
 
}; 
 

 
console.log(typeof(multiarray)); //"object" 
 
console.log(typeof(multiarray) == Array); //false

對象的所有原型在JavaScript中枚舉。你可以用for ...在聲明中遍歷鍵。

for ... in聲明以任意順序迭代 對象的枚舉屬性。對於每個不同的屬性,可以執行語句 。

var multiarray = { 
 

 
    cat:{ 
 
     name:'hellokitty', 
 
     legs:4 
 
    }, 
 
    dog:{ 
 
     name:'fred', 
 
     legs:4 
 
    }, 
 
    ape:{ 
 
     name:'charlie', 
 
     legs:2 
 
    }, 
 
    elephant:{ 
 
     name:'big indian', 
 
     legs:4 
 
    } 
 
}; 
 

 
for(var k in multiarray) { console.log(k); } //will print keys (cat, dog, ape, elephant,)