TGViewer
Логово верстальщика Логово верстальщика @webdevlair · 7.9K subscribers
Post #3297 1.57K
👩‍💻 Динамическое создание таблицы из массива объектов

Напишите функцию, которая принимает массив объектов и массив ключей. Функция должна возвращать HTML-строку, содержащую таблицу <table>, где каждая строка <tr> соответствует объекту из массива, а каждая ячейка <td> — значению указанных ключей.

Пример использования:

const data = [
{ id: 1, name: "Alice", role: "Frontend Developer", experience: 2 },
{ id: 2, name: "Bob", role: "Backend Developer", experience: 5 },
{ id: 3, name: "Charlie", role: "DevOps Engineer", experience: 3 }
];

const columns = ["name", "role", "experience"];

const renderedTable = renderTable(data, columns);
console.log(renderedTable);
// Ожидаемый результат:
// "<table>
// <tr><td>Alice</td><td>Frontend Developer</td><td>2</td></tr>
// <tr><td>Bob</td><td>Backend Developer</td><td>5</td></tr>
// <tr><td>Charlie</td><td>DevOps Engineer</td><td>3</td></tr>
// </table>"


Решение задачи🔽

function renderTable(array, keys) {
const headers = `<tr>${
keys.map(key => `<th>${key}</th>`).join("")}</tr>`;
const rows = array
.map(item => `<tr>${
keys.map(key => `<td>${item[key]}</td>`).join("")}</tr>`)
.join("");
return `<table>${headers}${rows}</table>`;
}
More from @webdevlair
  1. Oct 14, 2026Post #4690
  2. Oct 14, 2026АЙТИШНИКИ БЕСПЛАТНОЕ ОБУЧЕНИЕ Проект «Terminal» стал крупнейшей библиотекой бесплатного об…
  3. Oct 10, 2026Ухожу из ВЕБА в GameDEV. Сделал игру с ИИ на UE5 за 72 ЧАСА. Ну да, очередной «я всё броси…
  4. Oct 9, 2026Реальный факап с Opus Значит, запустил чел Opus с выключенными запросами разрешений. Ожида…
  5. Oct 9, 2026Post #4684
  6. Oct 8, 2026Stack Overflow протрезвел и рассказал, как мы все утонули в ИИ Опросили больше 30 тысяч че…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →