Я удивлен, простой для ... из l oop пока не упоминается.
const array = [['Team A', 'City A', '100'],['Team B', 'City A', '80'],['Team C', 'City A', '90']];
const output = {};
for (const [team, city, points] of array) {
output[team] = {team, city, points};
}
console.log(output);
Причина, по которой ваш текущий код не работает, заключается в том, что вы вызываете array.map
, который по своей природе возвращает новый массив, а не объект. Кроме того, вы создаете новый объект output
в каждой итерации array.map
, тогда как должен быть только один объект output
, содержащий различные команды.
Обратите внимание, что в этом ответе используется разрушающее назначение и буквенное обозначение ES2015 .
Вот версия, которая больше похожа на ту, что у вас есть в настоящее время, но использует forEach
вместо map
. Это присваивает output
перед итерацией, обновляя output
каждую итерацию.
const array = [['Team A', 'City A', '100'],['Team B', 'City A', '80'],['Team C', 'City A', '90']];
const output = {};
array.forEach(x => {
output[x[0]] = {team: x[0], city: x[1], points: x[2]};
});
console.log(output);