они оба должны быть идентичны, если вы сделаете их реализации одинаковыми, и уменьшить его будет немного проще, поскольку разработчики знают, что в нем есть аккумулятор, тогда как в forEach вы просто реализуете сокращение самостоятельно
const mapWithReduce = (people) => people.reduce((map, person) =>
{
map[person.name]: = person.available;
return map
}, {}
);
редактирование: возможно, что под капотом forEach
более производительно, но если вы используете babel или другой транспортер, это, вероятно, спорный вопрос, потому что на этом этапе они должны сделать работу более идиоматической версии производительный. ( источник )