var foo = {“bar”:{“blah”:9}};
如果我不知道密钥是“bar”,有没有办法获得foo唯一成员的[“blah”]值?
我可以以某种方式引用对象的第一个成员而不知道它的键吗? 我正在寻找相当于 foo [0] [“blah”]如果foo是普通数组。
在我的情况下,我实际上无法迭代foo来获取密钥。
这是清楚的吗?
答案 0 :(得分:6)
据我所知,使用Javascript Object
(在字面意义上,类型为`Object的对象),唯一的方法是:
for(var i in foo) {
var value = foo[i].blah;
break;
}
现在value
将包含bar
对象中foo
对象的第一个可枚举属性的值。当然,您可以将其抽象为函数。我打算写一个例子,但是CMS has a fantastic one in his answer here.
答案 1 :(得分:2)
编辑:同意@kangax,制作正常功能更安全,不会污染原生的Object.prototype,这会导致意外行为:
function firstMember (obj) {
for(var i in obj)
if (obj.hasOwnProperty(i)){ // exclude properties from the prototype
return obj[i];
}
}
firstMember(foo)['blah']; // 9
答案 2 :(得分:1)
Javascript中的对象是名称/值对的无序集合,因此实际上没有访问对象的第一个或最后一个属性。找到某个键值的唯一方法是迭代一个对象(带有for-in)。您可以在第一次迭代时停止,但未指定顺序,因此两个不同的实现可以在第一次迭代时返回两个不同的键。
答案 3 :(得分:0)
我担心你试图做的事情是不可能的。对象本质上是散列映射,因此存储属性的顺序应该出现在对象内存中的随机位置(并且散列函数越好,位置越随机)。
如果您单步执行遍历对象所有属性的循环,则可以自己查看。由于结构的随机性,没有设置顺序可以迭代。
也许您可以将值存储在对象和数组中?
答案 4 :(得分:0)