Сортировка списка комментариев Wordpress для получения древовидного списка на ES6
Последние записи
Хостинг для сайта
Если выбираете хостинг под проект — советую Timeweb. Современная инфраструктура, широкий выбор тарифов от стартовых до VPS под нагрузку, отзывчивая техподдержка, которая отвечает по существу, а не отписками. Я сам держу на нём часть своих проектов и рекомендую клиентам.
Перейти Партнёрская ссылка. Для вас цена не меняется.Wordpress прекрасная CMS, но мне пришлось помучиться, чтобы отсортировать комментарии в древовидном порядке. Спасибо Kobe со stackoverflow за прекрасную функцию сортировки на ES6
Имеем массив на входе
Преобразовываем его с помощью функции:
var comments = this.props.data.COMMENTS;
comments = comments.sort((a, b) => b.comment_parent - a.comment_parent);
const sortComments = (comments) => {
var temp = [...comments];
comments.forEach((o, index) => {
if (temp[0].comment_parent === 0) {return;}
var parentIndex = temp.findIndex(o => o.comment_ID === temp[0].comment_parent);
if(typeof temp[parentIndex]!="undefined"){
temp[parentIndex].children ? temp[parentIndex].children.push(temp[0]) : temp[parentIndex].children = [temp[0]];
temp.shift();
}
});
return temp;
}
И получаем на выходе:
Для рекурсивного вывода комментариев можно воспользоваться примером 0xD34F с qna.habr.com
Перепост материала:
Комментарии