2015-02-09 36 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