нужно преобразовать массив состоящий из массивов, в массив состоящий из объектов
let tableData = [
["firstName", "lastName", "city", "state"],
["Elisabeth", "Gardenar", "Toledo", "OH"],
["Jamaal", "Du", "Sylvania", "OH"],
["Kathlyn", "Lavoie", "Maumee", "OH"],
]
нужно преобразовать как-то в
{ "firstName" : "Elisabeth", "lastName" : "Gardenar", "city" : "Toledo", "state" : "OH" },
{ "firstName" : "Jamaal", "lastName" : "Du", "city" : "Sylvania", "state" : "OH" },
{ "firstName" : "Kathlyn", "lastName" : "Lavoie", "city" : "Maumee", "state" : "OH" }
принцип должен быть на подобии таким
let result = tableData.map(([[x1, x2, x3, x4], [y1, y2, y3, y4], [z1, z2, z3, z4], [q1, q2, q3, q4]]) => ([{ x1: y1, x2: y2, x3: y3, x4: y4 }, { x1: z1, x2: z2, x3: z3, x4: z4 }, { x1: q1, x2: q2, x3: q3, x4: q4 },]));```
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
const tableData = [
["firstName", "lastName", "city", "state"],
["Elisabeth", "Gardenar", "Toledo", "OH"],
["Jamaal", "Du", "Sylvania", "OH"],
["Kathlyn", "Lavoie", "Maumee", "OH"],
];
const newData = [];
for (let i = 1; i < tableData.length; i++) {
const a = {};
for (let j = 0; j < tableData[0].length; j++) {
a[tableData[0][j]] = tableData[i][j];
}
newData.push(a);
}
console.log(newData);
Автор решения: Leonid
→ Ссылка
Можно перебрать урезанный на первый элемент (нашу схему) массив (arr), каждый элемент этого массива (val) с помощью reduce назначить соответствующему ключу (по индексу i) аккумулятору obj.
const tableData = [
["firstName", "lastName", "city", "state"],
["Elisabeth", "Gardenar", "Toledo", "OH"],
["Jamaal", "Du", "Sylvania", "OH"],
["Kathlyn", "Lavoie", "Maumee", "OH"]
];
console.log(createObjects(tableData));
function createObjects(data) {
return data.slice(1).map(arr => arr.reduce((obj, val, i) => {
obj[data[0][i]] = val;
return obj
}, {}));
}