2014-09-05 4 views
0

Я получаю некоторые JSON из PHP как это (предпросмотр в инструментах Firefox):Iterate только через объекты

1:Object 
    0:Object 
    1:Object 
    2:Object 
    3:Object 
    Name: "SomeName" 

теперь я хочу итерацию по объектам, но не имя ключа. Кажется, если я делаю $ .each, он включает пару ключ/значение. Как я могу избежать этого? Также почему я могу выбрать числовое значение для первого объекта (у меня есть «1»), но не назначить ему значение? Хотелось бы, чтобы это выглядело так, например,

1:SomeNameIGaveIt 
    0:Object 
    1:Object 
    2:Object 
    3:Object 

Это привело бы к тому, что мое имя k/v-пара устарело.

JSON

{"1": {"Name":"SomeName", "0":{"data":"data"}. "1":{"data":"data"}}} 
+0

Это массив, а последнее значение - это именованный ключ? – tymeJV

+0

Можете ли вы опубликовать фактический JSON? Этот теоретический материал трудно диагностировать. –

+0

Я иду: array ['id'] = array ("Name" => "SomeName"). Затем я использую array_push (arrayOfObjects); помещать объекты. – user3585210

ответ

0

В JavaScript, строка является "подкласс" объекта. К счастью для вас, есть оператор typeof;

в консоли Chrome

var a = "foo" //makes a String 
var b = {} //makes an empty Object 
typeof a 
"string" 
typeof b 
"object" 

Используя это, вы можете проверить, чтобы гарантировать то, что не является строкой, прежде чем делать операцию на нем.

Другой вариант: вместо повторения с использованием вызова json $ .each вы можете просто перебирать его через JavaScript for-loop. Если вы знаете, что количество элементов внутри вашего объекта SomeNameIGaveIt исправлено, вы можете использовать фиксированное количество итераций, а затем использовать оператор индексирования массива (SomeNameIGaveIt [index]) или использовать цикл for-in (для (var i in array) {...})

Если вы используете цикл for-in, вы можете проверить, является ли индекс номером с помощью typeof, как указано выше. Любой из этих подходов принесет очень похожие результаты, поэтому выберите то, что вам больше подходит.

+0

Спасибо. Просто спросить: скажем, я начинаю, получая ответ JSON вроде этого {«1»: «Joey»}. Может ли это быть добавлено к этому: {"1": "Joey": {"age": "24"}} т.е. может ли объект быть прикреплен к этому объекту? – user3585210

+0

@ user3585210 - Нет, это неверно. Как получить доступ к этому внутреннему объекту? – tymeJV

+0

@ user3585210 во-первых, будьте осторожны: вы индексируете по «1», а не по первой, это строка, вторая - номер . Во-вторых, нет, но вы можете это сделать: x = {1: {имя: 'Joey', возраст: 24}, 2: {имя: 'Jill', возраст: '32 '}} – Vyross

Смежные вопросы