获取对象的第一个索引
考虑:
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));