Подтвердить что ты не робот

Получение первого имущества 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

4b9b3361

Ответ 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])
})