考虑:
var object = {
foo: {},
bar: {},
baz: {}
}
我该怎么做:
var first = object[0];
console.log(first);
显然,这行不通,因为第一个索引名为foo, 不是0。
console.log(object['foo']);
工作,但我不知道它叫foo。它可以被命名为任何东西。我只想要第一个。
考虑:
var object = {
foo: {},
bar: {},
baz: {}
}
我该怎么做:
var first = object[0];
console.log(first);
显然,这行不通,因为第一个索引名为foo, 不是0。
console.log(object['foo']);
工作,但我不知道它叫foo。它可以被命名为任何东西。我只想要第一个。
当前回答
我的解决方案:
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));
其他回答
对于对象的第一个键,您可以使用
console.log(Object.keys(object)[0]);//print key's name
价值
console.log(object[Object.keys(object)[0]]);//print key's value
根据CMS的回答。我没有直接得到值,而是在它的下标处取键,并使用this来获得值:
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'
没有办法获得第一个元素,因为JavaScript中的“散列”(对象)具有无序属性。最好的方法是将键存储在数组中:
var keys = ["foo", "bar", "baz"];
然后使用它来获得正确的值:
object[keys[0]]
这不会给你第一个,因为javascript对象是无序的,但这在某些情况下是好的。
myObject[Object.keys(myObject)[0]]
只是为了好玩,这在JS 1.8.5中是有效的
var obj = {a: 1, b: 2, c: 3};
Object.keys(obj)[0]; // "a"
这和你看到的顺序是一样的
for (o in obj) { ... }