【问题标题】:The easiest way to access an object's single own property?访问对象的单一属性的最简单方法是什么?
【发布时间】:2015-06-08 23:58:43
【问题描述】:

我有一个对象,它只有一个属性(自己的属性)。访问该属性值的最简单方法是什么?

类似:

value = obj[<firstProperty>];

我知道我可以编写一个函数或一个 for 循环来执行此操作,但我想问是否有更短的方法。

for (p in obj) {
    if (obj.hasOwnProperty(p)) {
       value = obj[p];
    }
}

我不会事先知道该物业的名称。我只知道直接在对象上只会有一个属性。

【问题讨论】:

  • 修复数据的设计。具有一个未知属性名称的对象通常表示沿线某处的设计选择不佳。具有未知属性名称的单个数据不属于对象。如果您只想存储单个未知键和值,则只需将它们放入数组["unknownKey", value] 即可直接访问每个。
  • 我敢打赌。向我们展示整体背景,如果您描述的是设计它的最佳方式,我会感到非常惊讶。
  • 是什么让这个案例与众不同?
  • Javascript 没有内置方法来执行此操作的原因是,有更好的方法来表达 Javascript 直接支持的数据结构。您甚至可以使用两个已知的属性名称来存储您的两个未知值{propname: "unknownKey", value: val}。我宁愿看到人们改进一个没有这个问题的更好的设计,而不是实施一个黑客来解决这个设计。但是,如果你不想改变设计,我猜这是你的选择。
  • @ChrisGciso - 如果你真的想解释,你必须展示代码和实际的数据结构。光是这些话就很难理解。

标签: javascript object properties


【解决方案1】:

类似

var value = obj[ Object.keys(obj)[0] ];

使用Object.keys 获取密钥,使用[0] 获取第一个(也是唯一的)密钥

【讨论】:

【解决方案2】:

这应该可行。

var keys = Object.keys(obj);
var value = obj[keys[0]];

我们可以让它更短

var value = obj[Object.keys(obj)[0]];

【讨论】:

  • @ChrisGciso - 不,第二个!
  • @adeneo,哈哈哈 :) 实际上我在发布此内容时没有看到您的答案。但看起来你是第一个:)
  • 没关系,你去吧,接受哪个对我来说并不重要,这似乎是来自 OP 的奇怪评论
猜你喜欢
  • 2011-06-20
  • 2010-12-29
  • 2020-11-20
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 2010-09-25
相关资源
最近更新 更多