The easiest way to access an object's single own property?
我有一个仅具有一个属性(自己的属性)的对象。访问该属性值的最简单方法是什么?
类似的东西:
1
| value = obj[<firstProperty>]; |
我知道我可以编写一个函数或for循环来执行此操作,但是我问是否有更短的方法。
1 2 3 4 5
| for (p in obj) {
if (obj.hasOwnProperty(p)) {
value = obj[p];
}
} |
我不知道酒店的名字。我只知道直接在对象上只有一个属性。
- 修复数据设计。具有一个未知属性名称的对象通常表示沿线某处的设计选择不当。具有未知属性名称的单个数据不属于对象。如果只想存储一个未知的键和值,则只需将它们放入数组["unknownKey", value]中,就可以直接访问每个键和值。
-
我打赌你向我们展示总体情况,如果您描述的是设计它的最佳方法,我将感到非常惊讶。
-
是什么使这种情况与众不同?
-
Javascript没有内置的方法来执行此操作的原因是因为有很多更好的方法来表达Javascript确实支持的数据结构。您甚至可以使用两个已知的属性名称来存储两个未知值{propname:"unknownKey", value: val}。我宁愿看到人们将其改进为一个没有这个问题的更好的设计,也不愿实施破解来解决该设计。但是,如果您不希望更改设计,那是您的选择。
-
@ChrisGciso-如果您真的想解释,则必须显示代码和实际数据结构。仅凭单词是很难听的。
类似
1
| var value = obj[ Object.keys(obj)[0] ]; |
使用Object.keys获取密钥,并使用[0]
获取第一个(也是唯一)密钥
- @SLaks-当然,为什么不呢,就像shift()一样,这有关系吗?
-
因为改变数组的速度较慢
-
@SLaks-是的,我想函数调用要少一些
-
developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/…供参考
这应该有效。
1 2
| var keys = Object.keys(obj);
var value = obj[keys[0]]; |
我们可以缩短它
1
| var value = obj[Object.keys(obj)[0]]; |
-
@ChrisGciso-不,第二!
-
@adeneo,哈哈哈:)实际上,发布此消息时我没有看到您的答案。但看起来您是第一个:)
-
很好,您走了,对我来说,接受哪个被接受并不重要,这就像是来自OP的奇怪评论