获得第一个JSON属性

pei*_*rix 19 javascript json

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

我想做这样的事情:

var firstProp = jsonObj[0];
Run Code Online (Sandbox Code Playgroud)

编辑:我得到一个JSON对象,其中包含带有图像网址的数组类别.

像这样:

{
  "category1":["image/url/1.jpg","image/url/2.jpg"],
  "category2":["image/url/3.jpg","image/url/4.jpg"]
}
Run Code Online (Sandbox Code Playgroud)

然后我遍历对象来插入图像,我真正想要的只是一种优雅的方式来查看首先插入的类别.起初我就是这么做的

for (var cat in images) {
    if (i==0) firstCat = cat;
    ...
}
Run Code Online (Sandbox Code Playgroud)

但有些人觉得"觉得"难看......所以这基本上只是一个优雅的问题:p

Pao*_*ino 33

对象属性的顺序不能保证与放入它们的方式相同.但实际上,所有主流浏览器都会按顺序返回它们.所以,如果你依赖这个......

var firstProp;
for(var key in jsonObj) {
    if(jsonObj.hasOwnProperty(key)) {
        firstProp = jsonObj[key];
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

另请注意,Chrome中有关于订购的错误,在某些边缘情况下,它不会按照提供的方式对其进行排序.就未来的变化而言,实际上机会实际上非常小,因为我相信这已经成为标准的一部分,所以如果对此有任何支持只会成为正式的.

但是,考虑到所有事情,如果你真的,真的,绝对的,积极的,想要确定它将以正确的顺序使用你需要使用数组.否则,上面没问题.

相关问题:元素顺序 - 用于javascript中的(... in ...)循环


小智 28

console.log(jsonObj[Object.keys(jsonObj)[0]]);
Run Code Online (Sandbox Code Playgroud)

  • 最好写一个简短的解释,解释为什么这是答案,以及为什么你的答案比其他答案更好。 (2认同)
  • 据我了解, Object.keys(jsonObj) 将创建一个对象的键数组,可以使用 [] 表示法进行访问。[0] 是数组中的第一项。将其添加为 jsonObject 的键查找(在其自己的方括号内)本质上是这样说的;“创建对象中所有键的数组,给我第一个,现在在原始对象中查找该键的值”。 (2认同)

Que*_*tin 14

没有"第一"财产.对象的属性是无序的.

您可以获得JS引擎决定首先提供循环的任何内容.

function maybe_first_in_object(ob) {
    for (var props in ob) {
        return prop;
    }
}
Run Code Online (Sandbox Code Playgroud)

...但是如果订单很重要,请使用数组而不是对象.