有没有办法获得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;
...
}
但有些“感觉”丑陋...所以这基本上只是一个优雅的问题。
发布于 2009-07-12 19:34:37
不能保证对象属性的顺序与您放入它们的方式相同。然而,在实践中,所有主流浏览器都会按顺序返回它们。所以如果你不介意的话...
var firstProp;
for(var key in jsonObj) {
if(jsonObj.hasOwnProperty(key)) {
firstProp = jsonObj[key];
break;
}
}
还要注意的是,有一个关于排序的bug in Chrome,在某些边缘情况下,它不会按照提供的方式对它进行排序。至于它在未来的变化,机会实际上是相当小的,因为我相信这将成为标准的一部分,所以如果有什么支持的话,只会成为官方的。
但是,如果你真的、真的、绝对、肯定地想要确保它的顺序是正确的,那么你需要使用一个数组。否则,上面的代码就可以了。
发布于 2015-05-10 23:47:38
console.log(jsonObj[Object.keys(jsonObj)[0]]);
发布于 2009-07-12 19:33:12
没有"first“属性。对象的属性是无序的。
您可以获得JS引擎决定首先使用循环提供的任何一个。
function maybe_first_in_object(ob) {
for (var props in ob) {
return prop;
}
}
…但如果顺序很重要,请使用数组而不是对象。
https://stackoverflow.com/questions/1116708
复制相似问题