Как мне перемещаться по вложенным массивам/объектам в данных JSON?

Я пытаюсь отобразить несколько контрольных списков из отдельных карточек в Trello. Я могу получить доступ к контрольному списку как к нескольким вложенным объектам, но я не знаю, как пройти глубже, чтобы вытащить фактический текст и сделать его списком элементов.

 Trello.get("cards/" + cardID + "/checklists", function(checklists) {
   console.log(checklists);
 });

журнал консоли

данные: http://jsbin.com/OzEdUkU/2/edit

Как пройти весь путь до имени объектов массива checkItem?


person EmptyPockets    schedule 19.01.2014    source источник
comment
Если мой ответ не работает, не могли бы вы включить образец ответа в виде объекта javascript, а не только вывод журнала?   -  person m59    schedule 19.01.2014
comment
Как включить образец ответа в качестве объекта javascript? Я новичок в этом. Я получаю эту ошибку, когда пытаюсь ответить на ваш ответ: [Ошибка] TypeError: «undefined» не является объектом (оценка «a.length») каждый (jquery-1.7.1.min.js, строка 2) (анонимная функция) ( trello.js, строка 44) n (jquery-1.7.1.min.js, строка 2) fireWith (jquery-1.7.1.min.js, строка 2) w (jquery-1.7.1.min.js, строка 4) г (jquery-1.7.1.min.js, строка 4)   -  person EmptyPockets    schedule 19.01.2014
comment
напишите это: jsbin.com/OzEdUkU/1/edit   -  person m59    schedule 19.01.2014
comment
На самом деле, попробуйте это. console.log(JSON.stringify(checklists)) Мне нужна строка, которую он печатает в журнале консоли... поместите ее в этот jsbin, щелкните "Поделиться", сохраните изменения и прокомментируйте ссылку для меня.   -  person m59    schedule 19.01.2014
comment
jsbin.com/OzEdUkU/2/edit?html,js,output спасибо   -  person EmptyPockets    schedule 19.01.2014
comment
Я обновил свой ответ подробностями и демонстрацией, показывающей, что теперь он работает. Также обратите внимание на то, что в моей демонстрации мы получили содержимое вашего журнала в переменную javascript.   -  person m59    schedule 19.01.2014


Ответы (1)


Это позаботится обо всем в вашем наборе данных. Текущая демонстрация здесь (нажмите).

$.each(checkList, function(i, obj) {
  console.log(obj);
  $.each(obj.checkItems, function(j, checkItem) {
    console.log(checkItem);
  });
});

checkList — это массив (набор) объектов. В вашем образце данных есть два объекта, вложенных в checkList, поэтому первый $.each предназначен для каждого объекта.

Каждый объект имеет некоторые свойства со строковыми значениями, а свойство checkList само по себе является массивом, поэтому второй $.each проходит через массив checkItems этого объекта. checkItems содержит только свойства со строковыми значениями, поэтому дополнительное вложение отсутствует.

Также обратите внимание, что $.each — это просто сокращенная функция jQuery для традиционных циклов for и может быть заменена обычным циклом for или более новой встроенной функцией js forEach.

person m59    schedule 19.01.2014