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

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

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

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

当前回答

使用Object.keys获取对象的财产数组。例子:

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

var keys = Object.keys(example); // => ["foo1", "foo2", "foo3"] (Note: the order here is not reliable)

此处提供了文档和跨浏览器垫片。它的使用示例可以在我的另一个答案中找到。

编辑:为了清楚起见,我只想重复其他答案中正确的表述:JavaScript对象中的键顺序未定义。

其他回答

这是一种更有效的方法,无需调用返回数组的Object.keys()或Object.values():

Object.prototype.firstKey = function () {
  for (const k in this) {
    if (Object.prototype.hasOwnProperty.call(this, k)) return k;
  }
  return null;
};

然后你可以像这样使用它:

const obj = {a: 1, b: 2, c: 3}
console.log(obj.firstKey()) //=> 'a'

这不一定会返回第一个键,请参见“for(…in…)”循环中的元素顺序

顶部答案可以生成整个数组,然后从列表中捕获。这是另一个有效的捷径

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

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

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

下面是获取第一个密钥的更简单的方法:var对象={foo1:'第一个属性“foo1”的值',foo2:{/*stuff2*/},foo3:{/*stuff3*/}};let[firstKey]=对象.keys(对象)console.log(firstKey)console.log(对象[firstKey])

如果有人喜欢数组销毁

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