题
考虑:
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", {}]
]
由于本阿尔珀特指出,JavaScript对象的属性是无序的,如果你希望他们以相同的顺序,他们在对象中指定列举你的代码被打破字面没有“第一”的属性。
其他提示
只是为了好玩这部作品在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 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]]
对于对象的第一密钥可以使用
console.log(Object.keys(object)[0]);//print key's name
为值
console.log(object[Object.keys(object)[0]]);//print key's value
有没有办法获得的第一个元素,看到在JavaScript“哈希”(对象)已无序性。最好的办法是将密钥存储在数组中:
var keys = ["foo", "bar", "baz"];
然后用它来得到适当的值:
object[keys[0]]
ES6
const [first] = Object.keys(obj)
使用强调可以使用_.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.
不是最好的解决方法,以及我很肯定,它可产生在不同的浏览器不同的结果(即,规格说,枚举不需要以相同的顺序来枚举特性,其被定义)。但是,我只有一个单一的财产在我的对象,这是一个不是问题的问题。我只需要第一密钥。
您可以做这样的事情:
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'
我的解决办法:
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));
不隶属于 StackOverflow