是否有一种优雅的方法来访问对象的第一个属性。。。

你不知道你的财产的名字而不使用像..这样的循环。。in或jQuery的$.each

例如,我需要在不知道foo1名称的情况下访问foo1对象:

var example = {
    foo1: { /* stuff1 */},
    foo2: { /* stuff2 */},
    foo3: { /* stuff3 */}
};

当前回答

如果有人喜欢数组销毁

const [firstKey] = Object.keys(object);

其他回答

没有“第一”属性。对象键是无序的。

如果您使用for(var foo in bar)对它们进行循环,您将以某种顺序获取它们,但将来可能会发生变化(尤其是添加或删除其他键时)。

单行版本:

var val = example[function() { for (var k in example) return k }()];

否。MDN定义的对象文本是:

一个对象的零对或多对属性名和相关值的列表,用大括号({})括起来。

因此,对象文字不是数组,您只能使用其显式名称或使用in关键字的for循环访问财产。

要获取对象中的第一个关键字名称,可以使用:

var obj = { first: 'someVal' };
Object.keys(obj)[0]; //returns 'first'

返回字符串,因此如果存在嵌套对象,则无法访问该对象,例如:

var obj={first:{someVal:{id:1}};使用该解决方案,您无法访问id。

如果您想获得实际对象,最好的解决方案是使用lodash,如:

obj[_.first(_.keys(obj))].id

要返回第一个键的值,(如果您不知道确切的第一个键名称):

var obj = { first: 'someVal' };
obj[Object.keys(obj)[0]]; //returns 'someVal'

如果您知道密钥名称,请使用:

obj.first

or

obj['first']

也可以执行Object.values(示例)[0]。