有没有办法获取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)
Que*_*tin 14
没有"第一"财产.对象的属性是无序的.
您可以获得JS引擎决定首先提供循环的任何内容.
function maybe_first_in_object(ob) {
for (var props in ob) {
return prop;
}
}
Run Code Online (Sandbox Code Playgroud)
...但是如果订单很重要,请使用数组而不是对象.