ato*_*gle 568 javascript object
是否有一种优雅的方式来访问对象的第一个属性...
for .. in
jQuery 那样的循环$.each
例如,我需要在foo1
不知道foo1名称的情况下访问对象:
var example = {
foo1: { /* stuff1 */},
foo2: { /* stuff2 */},
foo3: { /* stuff3 */}
};
Run Code Online (Sandbox Code Playgroud)
Grz*_*zan 1304
var obj = { first: 'someVal' };
obj[Object.keys(obj)[0]]; //returns 'someVal'
Run Code Online (Sandbox Code Playgroud)
使用此方法,您还可以通过索引访问其他属性.请注意!Object.keys
根据ECMAScript不保证退货订单,但非正式地是所有主要浏览器实施,请阅读/sf/answers/1624146681/以获取详细信息.
Gum*_*mbo 108
在第一次迭代后尝试for … in
循环并中断:
for (var prop in object) {
// object[prop]
break;
}
Run Code Online (Sandbox Code Playgroud)
gar*_*ing 47
你也可以Object.values(example)[0]
.
ben*_*tah 45
使用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)
Run Code Online (Sandbox Code Playgroud)
此处提供了文档和跨浏览器垫片.其中一个例子可以在我的另一个答案中找到.
编辑:为清楚起见,我只想回应其他答案中正确陈述的内容:javascript对象中的键顺序未定义.
net*_*iul 24
一个规则版本:
var val = example[function() { for (var k in example) return k }()];
Run Code Online (Sandbox Code Playgroud)
Que*_*tin 22
没有"第一"财产.对象键是无序的.
如果您遍历他们提供(var foo in bar)
你会得到他们的一些订单,但它可能会在未来发生变化(特别是如果您添加或删除其他键).
poc*_*sov 12
使用lodash库的解决方案:
_.find(example) // => {name: "foo1"}
Run Code Online (Sandbox Code Playgroud)
但是不能保证对象属性内部存储顺序,因为它依赖于javascript VM实现.
kis*_*aru 11
最佳答案可以生成整个数组,然后从列表中捕获。这是另一个有效的捷径
var obj = { first: 'someVal' };
Object.entries(obj)[0][1] // someVal
Run Code Online (Sandbox Code Playgroud)
要获取对象中的第一个键名称,您可以使用:
var obj = { first: 'someVal' };
Object.keys(obj)[0]; //returns 'first'
Run Code Online (Sandbox Code Playgroud)
返回一个字符串,因此您无法访问嵌套对象(如果有),例如:
var obj = { first: { someVal : { id : 1} };
使用该解决方案,您无法访问 id。
如果您想获取实际对象,最好的解决方案是使用 lodash,例如:
obj[_.first(_.keys(obj))].id
Run Code Online (Sandbox Code Playgroud)
要返回第一个键的值(如果您不确切知道第一个键名称):
var obj = { first: 'someVal' };
obj[Object.keys(obj)[0]]; //returns 'someVal'
Run Code Online (Sandbox Code Playgroud)
如果您知道密钥名称,只需使用:
obj.first
Run Code Online (Sandbox Code Playgroud)
或者
obj['first']
Run Code Online (Sandbox Code Playgroud)
这是获取第一个密钥的更简洁的方法:
var object = {
foo1: 'value of the first property "foo1"',
foo2: { /* stuff2 */},
foo3: { /* stuff3 */}
};
let [firstKey] = Object.keys(object)
console.log(firstKey)
console.log(object[firstKey])
Run Code Online (Sandbox Code Playgroud)
您可以使用Object.values()访问对象的值:
var obj = { first: 'someVal' };
Object.values(obj)[0]; // someVal
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
418092 次 |
最近记录: |