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

How to retrieve a value from an object by passing a variable as a 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}
]

我还有两个变量: 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
    )

最终我的目标是将对象 property/keys 作为变量动态传递。 IE。: 值 = position.myExchange.myCurr(而不是 position.KRAKEN.USD)

您可能不希望使用数组来形成数据,而是使用散列 table(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];