【问题标题】:How to retrieve a value from an object by passing a variable as a key如何通过将变量作为键传递来从对象中检索值
【发布时间】:2015-04-09 09:47:40
【问题描述】:

我有以下对象数组

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 = 'KRAKEN' 和 myCurr = USD,那么我需要获取结果为 = 1800

我在 coffeescript 中使用以下代码(并下划线 ._ 作为库),但它返回为“未定义”

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

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

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

【问题讨论】:

    标签: arrays json object coffeescript key


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢苏塞卡。然而,我需要的是能够说:position.myExchange.myCurr。即我们动态的变量。这可能吗?
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多