获取对象的第一个索引

考虑:

var object = { foo: {}, bar: {}, baz: {} } 

我将如何做到这一点:

 var first = object[0]; console.log(first); 

显然,这是行不通的,因为第一个索引被命名为foo ,而不是0

 console.log(object['foo']); 

作品,但我不知道它叫做foo。 它可以被命名为任何东西。 我只想要第一个。

如果对象的顺序很重要,则应该修改JSON模式以将对象存储在数组中:

 [ {"name":"foo", ...}, {"name":"bar", ...}, {"name":"baz", ...} ] 

或者可能:

 [ ["foo", {}], ["bar", {}], ["baz", {}] ] 

正如Ben Alpert所指出的那样,Javascript对象的属性是无序的,如果你期望它们按照它们在对象字面上指定的顺序枚举,你的代码就会被破坏 – 没有“first”属性。

只是为了好玩这个在JS 1.8.5中的作品

 var obj = {a: 1, b: 2, c: 3}; Object.keys(obj)[0]; // "a" 

这与您将看到的相同的顺序相匹配

 for (o in obj) { ... } 

如果你想要一些简洁的尝试:

 for (first in obj) break; alert(first); 

包装为一个function:

 function first(obj) { for (var a in obj) return a; } 

他们不是真的有序,但你可以做:

 var first; for (var i in obj) { if (obj.hasOwnProperty(i) && typeof(i) !== 'function') { first = obj[i]; break; } } 

.hasOwnProperty()对于忽略原型对象很重要。

这不会给你第一个javascript对象是无序的,但是这在一些情况下是好的。

 myObject[Object.keys(myObject)[0]] 

没有办法获得第一个元素,因为JavaScript中的“哈希”(对象)具有无序的属性。 你最好的select是将密钥存储在一个数组中:

 var keys = ["foo", "bar", "baz"]; 

然后使用它来获得适当的值:

 object[keys[0]] 

为您可以使用的第一个关键的对象

 console.log(Object.keys(object)[0]);//print key's name 

为了价值

 console.log(object[Object.keys(object)[0]]);//print key's value 

使用下划线,可以使用_.pairs将第一个对象条目作为键值对,如下所示:

 _.pairs(obj)[0] 

然后关键字会有一个更深的[0]下标,值为[1]

我昨天也有同样的问题。 我解决了这个问题:

 var obj = { foo:{}, bar:{}, baz:{} }, first = null, key = null; for (var key in obj) { first = obj[key]; if(typeof(first) !== 'function') { break; } } // first is the first enumerated property, and key it's corresponding key. 

不是最优雅的解决scheme,我很确定它可能会在不同的浏览器中产生不同的结果(即规格说枚举不需要按照定义的顺序枚举属性)。 不过,我只有一个属性在我的对象,所以这是一个非问题。 我只需要第一把钥匙。

你可以做这样的事情:

 var object = { foo:{a:'first'}, bar:{}, baz:{} } function getAttributeByIndex(obj, index){ var i = 0; for (var attr in obj){ if (index === i){ return obj[attr]; } i++; } return null; } var first = getAttributeByIndex(object, 0); // returns the value of the // first (0 index) attribute // of the object ( {a:'first'} ) 

获得你的对象的第一个关键

 const myObject = { 'foo1': { name: 'myNam1' }, 'foo2': { name: 'myNam2' } } const result = Object.keys(myObject)[0]; // result will return 'foo1' 

基于CMS的 答案 。 我不直接得到这个值,而是在索引处取得关键值,并使用它来获得值:

 Object.keyAt = function(obj, index) { var i = 0; for (var key in obj) { if ((index || 0) === i++) return key; } }; var obj = { foo: '1st', bar: '2nd', baz: '3rd' }; var key = Object.keyAt(obj, 1); var val = obj[key]; console.log(key); // => 'bar' console.log(val); // => '2nd' 

ES6

 const [first] = Object.keys(obj) 

我的解决scheme

 Object.prototype.__index = function(index) { var i = -1; for (var key in this) { if (this.hasOwnProperty(key) && typeof(this[key])!=='function') ++i; if (i >= index) return this[key]; } return null; } aObj = {'jack':3, 'peter':4, '5':'col', 'kk':function(){alert('hell');}, 'till':'ding'}; alert(aObj.__index(4));