2017-01-31 101 views
0

選擇從數組值我有這樣的陣列我class如何通過關鍵

stuff = [ 
     { ['xwz']: 'https://site1.com' }, 
     { ['erx']: 'https://site2.com' }, 
     { ['qwery']: 'https://someurl-here.com' }, 
     { ['stuff']: 'http://morestuffhere.com' } 
    ] 

我想通過傳遞像this.stuff['xwz']的關鍵在於獲得價值('https://...'),但沒有以這種方式工作。有任何想法嗎?

+1

這將創建一個*數組*的4個項目,每一個字典(又名「普通對象」)單(和不同的)鍵。 'stuff [0] ['xwz']'會「起作用」。但是,選擇統一密鑰或使用字典而不是數組可能會更好。 – user2864740

回答

3

這應該做的工作。

// declare as 
stuff = { 
    'xwz': 'https://site1.com', 
    'erx': 'https://site2.com', 
    'qwery': 'https://someurl-here.com', 
    'stuff': 'http://morestuffhere.com' 
} 

// Access with 
this.stuff['xwz'] // returns 'https://site1.com' 
+1

爲什麼使用'this'來訪問'stuff'? – shusson

+0

@shusson他對btw :)。我需要把'this.',否則我不能訪問'我的'類''東西' – sreginogemoh

+0

@sreginogemoh是有道理的,那麼你可以更新你的問題,以反映'stuff'是一個類的成員? nvm你已經做到了:) – shusson

-1

所以你寫代碼的方式,您需要先訪問數組索引的對象......像這樣(假設你使用的是類屬性)

this.stuff[0].xwz // This will retrieve the first array element 

現在,你爲什麼不使用只承擔這一任務的對象,這樣

stuff = { 
    xwz: 'https://site1.com', 
    erx: 'https://site2.com', 
    qwery: 'https://someurl-here.com', 
    stuff: 'http://morestuffhere.com' 
} 

    this.stuff.xwz 
+1

爲什麼用'this'來訪問'stuff'? – shusson

+0

因爲是打字稿,我們假設'stuff'是一個實例屬性(就像一個類中的全局變量,'this'是指這個類本身......就像是說'this'的'stuff'屬性一樣,類) –

+1

這是一個不好的假設,這個例子並不意味着它的範圍。在JavaScript中,因此在TypeScript中,'this'甚至可能不指向一個類,它可能是窗口對象。在TypeScript手冊上閱讀關於'this'的更多信息https://www.typescriptlang.org/docs/handbook/functions.html#this或http://yehudakatz.com/2011/08/11/understanding-javascript-function- invocation-and-this/ – shusson