如何通过将变量作为键传递来从对象中检索值

时间:2015-02-09 15:37:45

标签: arrays json object coffeescript key

我有以下对象数组

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}
]

我还有2个变量: myExchange和myCurr

我试图从数组中提取相关的货币值。 即如果myExchange ='克拉肯'和myCurr = USD,然后我需要获取结果为= 1800

我在coffeescript中使用以下代码(并以下划线._作为库),但它返回为' undefined'

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

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

最终我的目标是动态地将对象属性/键作为变量传递。即: value = position.myExchange.myCurr(和NOT position.KRAKEN.USD)

1 个答案:

答案 0 :(得分:1)

您可能希望不使用数组来形成数据,而是使用哈希表(JavaScript术语中的对象)将exchange值用作键:

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}
};

然后使用以下内容提取必填字段:

position['KRAKEN'].USD

position.KRAKEN.USD

在变量中有字段名称,例如:

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

然后记住,您可以访问对象的任何字段,就好像它是数组的索引一样:

position[myExchange][myCurr];