@ModestesGonze

Как разбить ячейки после определенных строк таблицы на массив?

Здравствуйте.
Демка тут
Подскажите как разбить данные таблицы на такой вид? То есть строка с классом .no это отдельный объект с вложенными значениями из следующих ячеек.
Скрин таблицы
[
  { 
   "title": "Базовая информация",
   "info": [
    { "subtitle": "Марка", "cell": "Cizeta" },
    { "subtitle": "Модель", "cell": "V16t" },
    // ... и т.д
   ],
  },
  { 
   "title": "Эксплуатационные характеристики",
   "info": [
    { "subtitle": "Расход топлива в городе", "cell": "24 л/100 км" },
    { "subtitle": "Топливо", "cell": "Бензин" },
    // ... и т.д
   ],
  }
]
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
$('table tr').get().reduce((acc, n) => {
  const $n = $(n);

  if (!$n.hasClass('no')) {
    acc[acc.length - 1].info.push({
      subtitle: $n.find('th').text(),
      cell: $n.find('td').text(),
    });
  } else if (!$n.has('.no2').length) {
    acc.push({
      title: $n.find('.car').text(),
      info: [],
    });
  }

  return acc;
}, [])

или

Array.prototype.reduce.call(
  document.querySelectorAll('table tr'),
  (acc, n) => {
    if (!n.classList.contains('no')) {
      acc[acc.length - 1].info.push({
        subtitle: n.querySelector('th').textContent,
        cell: n.querySelector('td').textContent,
      });
    } else if (!n.querySelector('.no2')) {
      acc.push({
        title: n.querySelector('.car').textContent,
        info: [],
      });
    }

    return acc;
  },
  []
)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы