У меня есть массив:
[
{ "name": "batman", "hasSidekick": true },
{ "name": "shazam!", "hasSidekick": false },
{ "name": "capt america", "hasSidekick": true },
{ "name": "spiderman", "hasSidekick": false }
]
Из этого я хочу создать новый массив имен героев, который будет иметь все вышеперечисленные имена, но когда для героя истинно hasSidekick
, должно быть добавлено дополнительное имя после него.
Ожидаемый результат:
[
"batman",
"batman's sidekick",
"shazam!", ,
"capt america",
"capt america's sidekick",
"spiderman"
]
Я могу сделать это с forEach
и выдвигать дополнительные элементы условно на основе hasSidekick
:
const heroes = [
{ name: "batman", hasSidekick: true },
{ name: "shazam!", hasSidekick: false },
{ name: "capt america", hasSidekick: true },
{ name: "spiderman", hasSidekick: false },
];
let heroesAndSidekicks = [];
heroes.forEach(hero => {
heroesAndSidekicks.push(hero.name);
if (hero.hasSidekick) {
heroesAndSidekicks.push(`${hero.name}'s sidekick`);
}
});
console.log(heroesAndSidekicks);
Но, пожалуйста, предложите, как Я могу сделать это функциональным способом программирования без мутаций.