Что является более оптимизированным способом .filter() + .map()
ИЛИ .forEach()
?
Вот примерный массив объектов:
var personnel = [
{
id: 5,
name: "Luke Skywalker",
pilotingScore: 98,
shootingScore: 56,
isForceUser: true,
},
{
id: 82,
name: "Sabine Wren",
pilotingScore: 73,
shootingScore: 99,
isForceUser: false,
},
{
id: 22,
name: "Zeb Orellios",
pilotingScore: 20,
shootingScore: 59,
isForceUser: false,
},
{
id: 15,
name: "Ezra Bridger",
pilotingScore: 43,
shootingScore: 67,
isForceUser: true,
},
{
id: 11,
name: "Caleb Dume",
pilotingScore: 71,
shootingScore: 85,
isForceUser: true,
},
];
И, допустим, мы хотим получить окончательный массив, дающийтолько имя и идентификатор, где isForceUser=true
[ { id: 5, name: 'Luke Skywalker' },
{ id: 15, name: 'Ezra Bridger' },
{ id: 11, name: 'Caleb Dume' } ]
Теперь есть 2 способа решить эту проблему:
- Используя .filter () +. map (), как показано ниже:
var APersonnel = personnel
.filter((person) => person.isForceUser)
.map((person) => ({ id: person.id, name: person.name }));
Используя .forEach () и выдвигая новый объект:
var BPersonnel = [];
personnel.forEach((person) => {
if (person.isForceUser) {
BPersonnel.push({ id: person.id, name: person.name });
}
});
Какое из указанных выше решений лучше и почему?