Проблема
Нам нужно объединить все эти массивы в один большой объект. Первая строка каждого массива – заголовки таблиц, за которыми следуют данные пользователей.
const arr1 = [ ["name", "id", "age", "weight", "Cool"], ["Susan", "3", "20", "120", true], ["John", "1", "21", "150", true], ["Bob", "2", "23", "90", false], ["Ben", "4", "20", "100", true], ]; const arr2 = [ ["name", "id", "height"], ["Bob", "2", "50"], ["John", "1", "45"], ["Ben", "4", "43"], ["Susan", "3", "48"] ]; const arr3 = [ ["name", "id", "parent"], ["Bob", "2", "yes"], ["John", "1", "yes"] ];
Мое предложение:
const data = {}; function addData(arr, uuid = 'id'){ const [headings, ...body] = arr; for(const elem of body){ let id; let person = {}; for(const [index, heading] of headings.entries()){ if(heading === uuid){ id = elem[index]; } person[heading] = elem[index]; } data[id] = {...data[id], ...person}; } } addData(arr1); addData(arr2); addData(arr3); console.table(data);
Вы можете улучшить это? У вас есть другое решение? Дайте мне знать в комментариях!
Оригинал: “https://dev.to/mgm793/merging-array-tables-in-js-26d4”