У меня есть массив comments
. Некоторые из этих комментариев на самом деле являются подкомментами других узлов в comments
. Каждый comment
имеет атрибуты num_comments
, parent_id
и id
. Я знаю, что комментарий имеет подкомментарии, если количество комментариев превышает 0.
Я хочу поместить подкомменты в родительский комментарий и удалить подкоммент из массива. После завершения внешнего цикла for в массиве comments
не должно быть дочерних комментариев, и каждый из дочерних комментариев перемещается в массив subcomments
родительского комментария.
Проблема в том, что после запуска этого кода каждый элемент в comments
удаляется, и я получаю:
Невозможно прочитать свойство 'item' из неопределенного
(что является результатом того, что comments
пусто.)
Вот код, с которым у меня проблемы:
for comment in comments
if comment.item.num_comments > 0
comment.item.subcomments = [] unless comment.item.subcomments
for comment_second in comments # Goes through a second time to find subcomments for the comment
if comment_second.item.parent_id == comment.item.id
comment.item.subcomments.push(comment_second)
comments.splice(comments.indexOf(comment_second), 1)
Edit:
Ответ ниже не сработал, но это был определенно шаг в правильном направлении. Я немного повозился с кодом, и я думаю, что происходит то, что temp_comment.item.subcomment
s не определяется как массив.
Который вызывает ошибку, которая не позволяет этому быть выдвинутым. Это не объясняет того, что из массива ничего не удаляется.
temp_comments = comments.slice(0)
for comment in comments
for comment_second in comments
temp_comment = temp_comments[temp_comments.indexOf(comment)]
temp_comment.item.subcomements = [] unless temp_comment.item.subcomments?
if comment_second.item.parent_id == comment.item.id
temp_comment.item.subcomments.push(comment_second)
temp_comments.splice(temp_comments.indexOf(comment_second), 1)
comments = temp_comments
Я получаю то же сообщение об ошибке, что и раньше
2-е редактирование:
Ошибка на самом деле [] is not a function