【问题标题】:Getting the the value of a Key without know the name of the key [duplicate]在不知道键名的情况下获取键的值[重复]
【发布时间】:2015-01-23 19:16:52
【问题描述】:

我有一个这样的对象:

var foo = { 'bar' : 'baz' }

bar可以是任何单词,我需要阅读baz。由于对象总是这样(一行),我发现每个循环效率低下。

$.each( body.message, function( key, value ) { 
  alert(value);
} 

有什么聪明的方法吗?

【问题讨论】:

  • “低效”如何?如,丑陋的代码?打字效率低?您无需担心实际的 CPU 性能(除非您每秒执行 1000 次,否则您的设计中可能会遇到其他问题:p)。
  • 从 JavaScript 1.8.5 开始,您可以使用 Object.keys(obj)
  • @Engineer Dollery 等人:这不是该问题的重复,因为 OP 只需要一个特定的(第一个)属性名称。骗子的答案是不恰当的。以下 Scimonster 的回答是恰当的。

标签: javascript jquery


【解决方案1】:

使用Object.keys() 列出密钥,然后从那里获取。

foo[Object.keys(foo)[0]]

【讨论】:

    【解决方案2】:

    您也可以只使用 for 循环:http://jsfiddle.net/TrueBlueAussie/s2745674/1/

    var foo = { 'bar' : 'baz' }
    
    for (var key in foo)
    {
        alert(key);
    }
    

    对于单个项目(如指定),您不会注意到速度下降(见鬼的项目负载您会注意到它):)

    【讨论】:

      【解决方案3】:
      var foo = { 'bar' : 'baz' };
      
      for(var key in foo)
      {
          if (foo.hasOwnProperty(key)){
               // use key for the key and foo[key] for the value.        
               console.log('key: ' + key + ' value: ' + foo[key]); // key: bar value: baz
          }
      }
      

      【讨论】:

      • 有点矫枉过正,因为 OP 指定对象只有一个属性。
      • @TrueBlueAussie - 这对我来说就像一个例子..
      • “由于对象总是这样(一行),我发现每个循环效率低下。” :) (感谢您提醒我设置自己的for var)
      • 如果是这样,Object.keys(foo)[0] 是这里的最佳答案:)
      • 我不打算与那个争论......我只是发布了更简单的替代方案(就像你所做的那样):)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多