[英]Accessing object keys with for loop
我有一些棋子存儲為對象數組,我想使用 for 循環訪問鍵,但我收到“無法讀取未定義的屬性 '0'”的錯誤消息。 為什么會出現這種情況?
謝謝你的幫助!
Javascript:
pawn = {
color: [
{c1: 'white'}, {c2: 'white'}, {c3: 'white'}, {c4: 'white'}, {c5: 'white'}, {c6: 'white'},
{c7: 'white'}, {c8: 'white'}, {c9: 'black'}, {c10:'black'}, {c11: 'black'}, {c12: 'black'},
{c13:'black'}, {c14:'black'}, {c15:'black'}, {c16:'black'}
],
playable: function()
{
k1 = [];
for (i = 0; i < 16; i++)
{
k1.push(Object.keys(pawn.color[i]));
console.log(k1); //[['c1'], ['c2'], ['c3'], ['c4'], ['c5'], ['c6'], ['c7'], ['c8'],
// ['c9'], ['c10'], ['c11'], ['c12'], ['c13'], ['c14'], ['c15'], ['c16']];
}
for (piece = 0; piece < 16; piece++)
{
if (pawn.color[piece].k1[piece][0] == 'white'){ //error msg.
console.log('white');
}
if (pawn.color[piece].k1[piece][0] == 'black'){ //error msg.
console.log('black');
}
}
};
您的color
數組有 16 個條目。 這些條目中的每一個都是以下形式的 object:
{ key: color }
其中key
是“c1”到“c16”, color
是“黑色”或“白色”。
在你的 for 循環中,你試試這個:
if (pawn.color[piece].k1[piece][0] == 'white'){
讓我們分解一下:
{c1: 'white'}
undefined
因為 object 沒有k1
值。undefined
你可能想要的是這樣的:
if (pawn.color[piece][k1[piece][0]] == 'white') {
但是,如果您將其拆分為如下所示,則更容易閱讀:
const firstKey = k1[piece][0];
if (pawn.color[piece][firstKey] == 'white') {
有時很難弄清楚如何使用對象訪問 arrays。 檢查語法,如果你不明白,請告訴我。
pawn = { color: [ {c1: 'white'}, {c2: 'white'}, {c3: 'white'}, {c4: 'white'}, {c5: 'white'}, {c6: 'white'}, {c7: 'white'}, {c8: 'white'}, {c9: 'black'}, {c10:'black'}, {c11: 'black'}, {c12: 'black'}, {c13:'black'}, {c14:'black'}, {c15:'black'}, {c16:'black'} ]}; function payable() { k1 = []; for (i = 0; i < 16; i++) { k1.push(Object.keys(pawn.color[i])); // console.log(k1); //[['c1'], ['c2'], ['c3'], ['c4'], ['c5'], ['c6'], ['c7'], ['c8'], // ['c9'], ['c10'], ['c11'], ['c12'], ['c13'], ['c14'], ['c15'], ['c16']]; } for (piece = 0; piece < 16; piece++) { if (pawn.color[piece][k1[piece][0]] == 'white'){ //error msg. console.log('white'); } if (pawn.color[piece][k1[piece][0]] == 'black'){ //error msg. console.log('black'); } } }; payable();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.