有没有一种优雅的方式来访问对象的第一个属性...
- 您不知道您的房产名称的地方
- 不使用类似
for .. in
或 jQuery 的循环$.each
例如,我需要在foo1
不知道 foo1 名称的情况下访问对象:
var example = {
foo1: { /* stuff1 */},
foo2: { /* stuff2 */},
foo3: { /* stuff3 */}
};
有没有一种优雅的方式来访问对象的第一个属性...
for .. in
或 jQuery 的循环$.each
例如,我需要在foo1
不知道 foo1 名称的情况下访问对象:
var example = {
foo1: { /* stuff1 */},
foo2: { /* stuff2 */},
foo3: { /* stuff3 */}
};
var obj = { first: 'someVal' };
obj[Object.keys(obj)[0]]; //returns 'someVal'
使用它,您还可以通过索引访问其他属性。请注意!Object.keys
ECMAScript 不保证退货顺序,但非正式地,所有主要浏览器的实现都是如此,请阅读https://stackoverflow.com/a/23202095以了解有关此内容的详细信息。
尝试for … in
循环并在第一次迭代后中断:
for (var prop in object) {
// object[prop]
break;
}
你也可以这样做Object.values(example)[0]
。
使用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)
此处提供了文档和跨浏览器 shim 。它的使用示例可以在我的另一个答案中找到。
编辑:为清楚起见,我只想回应其他答案中正确说明的内容:javascript 对象中的键顺序未定义。
没有“第一”属性。对象键是无序的。
如果您使用 for 循环遍历它们,(var foo in bar)
您将按某种顺序获取它们,但将来可能会发生变化(特别是如果您添加或删除其他键时)。