2015-02-09 37 views
2

檢索來自物體的值我已經對象如何通過使變量作爲密鑰

position = [ 
    {exchange: 'KRAKEN', USD: 1800, EUR: 800, GBP: 800, BTC: 800}, 
    {exchange: 'BTCE', USD: 800, EUR: 800, GBP: 800, BTC: 800}, 
    {exchange: 'BITSTAMP', USD: 600, EUR: 800, GBP: 800, BTC: 800}, 
    {exchange: 'MYWALLET', USD: 1300, EUR: 800, GBP: 800, BTC: 800} 
] 

的下面陣列I也有2個變量: myExchange和myCurr

我試圖從數組中提取相關貨幣值。 即如果myExchange ='KRAKEN'和myCurr = USD,那麼我需要獲取結果= 1800

我在coffeescript(和下劃線._作爲庫)中使用以下代碼,但它返回爲' undefined'

objBuy = _.find(position, (objBuy) -> 
     objBuy.exchange is buyExchange 
    ) 

    objBuyCurr = _.find(objBuy, (objBuyCurr) -> 
     objBuy._key is buyCurr 
    ) 

最終我的目標是將對象屬性/鍵作爲變量動態傳遞。即: 值= position.myExchange.myCurr(不position.KRAKEN.USD)

回答

1

您可能要形成你的數據不使用數組,但它使用exchange一個哈希表(在JavaScript方面的對象)值作爲鍵:

position['KRAKEN'].USD 

position.KRAKEN.USD 

position = { 
    'KRAKEN': { USD: 1800, EUR: 800, GBP: 800, BTC: 800}, 
    'BTCE': { USD: 800, EUR: 800, GBP: 800, BTC: 800}, 
    'BITSTAMP': { USD: 600, EUR: 800, GBP: 800, BTC: 800}, 
    'MYWALLET': { USD: 1300, EUR: 800, GBP: 800, BTC: 800} 
}; 

然後用提取所需的場

在你有字段的名稱中的變量,例如:

var myExchange = "KRAKEN"; 
var myCurr = "USD"; 

然後請記住可以訪問對象的任何字段,就好像它是一個陣列的索引:

position[myExchange][myCurr]; 
+0

謝謝Suseika。然而我需要的是能夠說:position.myExchange.myCurr。即動態地變換我們的變量。這可能嗎? – 2015-02-09 15:51:25

+0

@saurabhgoyal我更新了答案 – gvlasov 2015-02-09 15:58:57