Получение первого имущества JSON
Есть ли способ получить имя первого свойства объекта JSON?
Я хотел бы сделать что-то вроде этого:
var firstProp = jsonObj[0];
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;
...
}
Но некоторые из них "чувствовали" уродливость... Так что это был в основном вопрос элегантности: p
Ответы
Ответ 1
Порядок свойств объекта не гарантированно совпадает с тем, как вы их вставляете. На практике, однако, все основные браузеры возвращают их по порядку. Так что если вы в порядке, полагаясь на это...
var firstProp;
for(var key in jsonObj) {
if(jsonObj.hasOwnProperty(key)) {
firstProp = jsonObj[key];
break;
}
}
Также обратите внимание на то, что в заказе ошибка в отношении заказа, в некоторых случаях края не заказывают его так, как они были предоставлена. Насколько это изменится в будущем, шансы на самом деле довольно малы, так как я считаю, что это становится частью стандарта, поэтому, если что-то поддержка для этого станет официальной.
Тем не менее, если вы действительно, действительно, абсолютно, положительно, хотите убедиться, что это будет в правильном порядке, вам нужно использовать массив. В противном случае вышесказанное прекрасно.
Похожие вопросы: Порядок элементов - для цикла (... in...) в javascript
Ответ 2
console.log(jsonObj[Object.keys(jsonObj)[0]]);
Ответ 3
Нет "первого" свойства. Свойства объекта неупорядочены.
Вы можете получить все, что движок JS решит предоставить сначала с помощью цикла.
function maybe_first_in_object(ob) {
for (var props in ob) {
return prop;
}
}
& hellip; но если порядок имеет значение, используйте массив, а не объект.
Ответ 4
Отличный вопрос. Я не знаю ни одного способа, кроме повторения в цикле for-in. Однако вам нужно только повторить попытку. Для обеспечения безопасности убедитесь, что это известное свойство [подробнее.
for (var propName in jsonObj) {
if (jsonObj.hasOwnProperty(propName)) {
return propName; // or do something with it and break
}
}
Отредактировано, чтобы быть более ясным, что вы повторяете имена свойств, а не их значения.
Ответ 5
При использовании jQuery вы также можете использовать $.each
для итерации по объекту JSON. Выглядит чище IMO, чем с помощью for
-loop
var items = {
'item1': 'content',
'item2': 'content',
'item3': 'content'
}
$.each(items, function() {
console.log($(this)[0])
})