Объедините объекты с одинаковыми значениями/идентификаторами и добавьте сумму к новому объекту

Odrowonz

Пользователь
Регистрация
25.03.15
Сообщения
1
Реакции
0
Баллы
1
У меня есть массив объектов, который выглядит следующим образом:
Объедините объекты с одинаковыми значениями/идентификаторами и добавьте сумму к новому объекту


Код:
teams.map(team =>{if(teams.includes(team.name)){return{
name: team.name,
won: team.won ===true?1:0}}})


Код (разметка): Я хочу, чтобы конечный массив выглядел следующим образом. В новый массив следует добавить только одну команду и подсчитать, сколько игр она выиграла. Порядок не имеет большого значения.

const transformedTeams =[{ name:'Liverpool', won:2},{ name:'Newcastle', won:1},{ name:'Chelsea', won:0}];
Код (разметка): Написанный мной код выглядит следующим образом, но, к сожалению, не возвращает правильное значение:

const teams =[{ name:'Liverpool', won:true, opponent:'Man Utd'},{ name:'Liverpool', won:true, opponent:'Liverpool'},{ name:'Chelsea', won:false, opponent:'Arsenal'},{ name:'Newcastle', won:true, opponent:'Liverpool'}];
Код (разметка):
 

Exp3RT

Пользователь
Регистрация
09.02.12
Сообщения
2
Реакции
0
Баллы
1
Не так аккуратно, как при использовании карты, но работает.
Код:
const teams = [ { name: "Liverpool", won: true, opponent: "Man Utd" }, { name: "Liverpool", won: true, opponent: "Liverpool" }, { name: "Chelsea", won: false, opponent: "Arsenal" }, { name: "Newcastle", won: true, opponent: "Liverpool" }
];
var transformedTeams = [];
teams.forEach(function (team) { let found = false; transformedTeams.forEach(function (tt) { if (tt.name === team.name) { found = true; if (team.won === true) { tt.won++; } } }); if (found === false) { transformedTeams.push({ name: team.name, won: team.won ? 1 : 0 }); }
});
Код (JavaScript):
 
Сверху Снизу