2013-02-06 79 views
-2

我在構建我認爲稍微複雜的東西,但是我意識到它不能按照我想要的方式工作,所以我在這裏。通過名稱獲取對象

以下是我正在做的一個例子。

ITEM1: { 
    prop1: 'desc1', 
    prop2: 'desc2', 
}, 
ITEM2: { 
    prop1: 'desc1', 
    prop2: { 
    SUBITEM1: { 
     prop1: 'desc1', 
     prop2: 'desc2', 
     prop3: 'desc3' 
    } 
    } 
} 

現在,這個完美的作品,如果我做了以下

ITEM2.prop2.SUBITEM1.prop1; 

的問題是我不能做ITEM2.prop2.SUBITEM1我需要做的是通過以下方式

ITEM2.prop2["SUBITEM1"].prop1 

項目還很年輕,所以如果整個列表需要重建才能做到這一點,我不介意。

我希望這是有道理的。

+3

什麼問題? ITEM2.prop2 [「SUBITEM1」]。prop1應該正常工作 –

+0

我弄不明白。 –

+3

你真的試過了嗎? 'ITEM2.prop2.SUBITEM1'完全等同於ITEM2.prop2 [「SUBITEM1」]'。如果你願意,你甚至可以做'ITEM2 [「prop2」] [「SUBITEM1」]。 –

回答

4

你究竟做了什麼?它可以在Chrome中運行。截圖爲您的信息...

文本表示:

ITEM1= { 
    prop1: 'desc1', 
    prop2: 'desc2', 
}, 
ITEM2= { 
    prop1: 'desc1', 
    prop2: { 
    SUBITEM1: { 
     prop1: 'desc1', 
     prop2: 'desc2', 
     prop3: 'desc3' 
    } 
    } 
} 
Object 
ITEM2.prop2.SUBITEM1.prop1; 
"desc1" 
ITEM2.prop2["SUBITEM1"].prop1 
"desc1" 
+1

謝謝!我會盡快接受。不能相信我忘記去除空間... –

+0

啊,我以前沒有看到你的答案。你用'ITEM1 ='代替'ITEM1:',就像我一樣。這就是它工作的原因。所以,它不是「這樣」。 – bfavaretto

+0

是的。即使我面臨相同的語法錯誤! :P –

0

你想單獨的對象嗎?我想你錯過了var關鍵字。在這種情況下,你還必須刪除你在那裏的額外逗號。試試這個:

var ITEM1 = { 
    prop1: 'desc1', 
    prop2: 'desc2', 
}; 
var ITEM2 = { 
    prop1: 'desc1', 
    prop2: { 
    SUBITEM1: { 
     prop1: 'desc1', 
     prop2: 'desc2', 
     prop3: 'desc3' 
    } 
    } 
}; 
console.log(ITEM2.prop2.SUBITEM1.prop1); // Works! 
+0

呃......它沒有'var'。 –

+0

不是用逗號。 OP中的代碼是無效的語法。 – bfavaretto

+0

It works buddy ... :) –