Проблемы с получением данных из словаря массива JS - PullRequest
2 голосов
/ 07 февраля 2020

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

Это функция, в которой я храню данные в массиве:

function getTaskKidData(str) {
   var tasks = $('#tasks_data > div');;
   var formated_tasks = [];
   var formated_kids = [];
   formated_homeworks = [];
   tasks.each(function(index) {
       var task_kids = $(this).find('ul').eq(0).find('li');
       var task_homeworks = $(this).find('ul').eq(1).find('li');
       if (task_kids.length > 0 && task_homeworks.length > 0) {
           task_kids.each(function(index) {
               var kid_name = $(this).text().trim();
               if (str == "kid"){
                   var kid = $('#kid_list > li > a[class*="active"]').text().replace(window.location.pathname.split('/')[2],'').trim();
                   if (kid == kid_name){
                       formated_kids.push({'name': kid_name});
                   }
               }else{
                   formated_kids.push({'name': kid_name});
               }
           });
           task_homeworks.each(function(index) {
               var homework_name = $(this).find('p').eq(0).text().trim();
               var homework_date = $(this).find('p').eq(1).text().trim();
               formated_homeworks.push({
                   'name': homework_name,
                   'date': homework_date,
               });
           });
           formated_tasks.push({
               'kids': task_kids,
               'homeworks': task_homeworks,
           })
       }
   });
   return formated_tasks;
}

I не понимаю, почему объекты в выводе массива являются тегами "li", если я храню данные в виде текста. Вывод массива следующий: enter image description here Это это код, где я пытаюсь получить данные:

var tasks = getTaskKidData("kid");
console.log(tasks)
       for (let i = 0; i < tasks.length; i++) {
           console.log("schedule");
           for (let j = 0; j < tasks[i]['kids'].length; j++) {
               console.log(tasks[i]['kids'][j]['name']);
           }
           for (let j = 0; j < tasks[i]['homeworks'].length; j++) {
               console.log(tasks[i]['homeworks'][j]['name']);
               console.log(tasks[i]['homeworks'][j]['date']);
           }
       }

И это вывод, когда я запускаю код:

enter image description here

Есть идеи о проблеме?

Спасибо, что прочитали !!

1 Ответ

3 голосов
/ 07 февраля 2020

В вашем коде у вас есть

var task_kids = $(this).find('ul').eq(0).find('li');

и позже вы регистрируете task_kids. Вывод журнала показывает элементы li, потому что это было то, что вы выбрали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...