首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取第一个JSON属性

获取第一个JSON属性
EN

Stack Overflow用户
提问于 2009-07-12 19:29:59
回答 5查看 85.1K关注 0票数 24

有没有办法获得JSON对象的第一个属性的名称?

我想做这样的事情:

var firstProp = jsonObj[0];

JSON edit:我正在获取一个JSON对象,它包含带有图像URL的数组类别。

如下所示:

{
  "category1":["image/url/1.jpg","image/url/2.jpg"],
  "category2":["image/url/3.jpg","image/url/4.jpg"]
}

然后我遍历对象以插入图像,我真正想要的是一种优雅的方式来查看哪个类别是首先插入的。一开始我就这么做了

for (var cat in images) {
    if (i==0) firstCat = cat;
    ...
}

但有些“感觉”丑陋...所以这基本上只是一个优雅的问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-12 19:34:37

不能保证对象属性的顺序与您放入它们的方式相同。然而,在实践中,所有主流浏览器都会按顺序返回它们。所以如果你不介意的话...

var firstProp;
for(var key in jsonObj) {
    if(jsonObj.hasOwnProperty(key)) {
        firstProp = jsonObj[key];
        break;
    }
}

还要注意的是,有一个关于排序的bug in Chrome,在某些边缘情况下,它不会按照提供的方式对它进行排序。至于它在未来的变化,机会实际上是相当小的,因为我相信这将成为标准的一部分,所以如果有什么支持的话,只会成为官方的。

但是,如果你真的、真的、绝对、肯定地想要确保它的顺序是正确的,那么你需要使用一个数组。否则,上面的代码就可以了。

相关问题:Elements order - for (… in …) loop in javascript

票数 35
EN

Stack Overflow用户

发布于 2015-05-10 23:47:38

console.log(jsonObj[Object.keys(jsonObj)[0]]);
票数 42
EN

Stack Overflow用户

发布于 2009-07-12 19:33:12

没有"first“属性。对象的属性是无序的。

您可以获得JS引擎决定首先使用循环提供的任何一个。

function maybe_first_in_object(ob) {
    for (var props in ob) {
        return prop;
    }
}

…但如果顺序很重要,请使用数组而不是对象。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1116708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档