Простая карта JavaScript - использование объекта в качестве возврата

1

Я изучаю функцию map и пытаюсь сделать надуманный пример, который, как я думал, будет работать. Этот код отлично работает:

let students = [{name: 'Susan', grades: [88, 38, 28]}, {name: 'Robert', grades: [28,97, 17]}];
let newStudents = students.map((el) => el.name);  
console.log(newStudents); // [ 'Susan', 'Robert' ]

Но то, что я действительно хотел, было следующим в функции map:

let newStudents = students.map((el) => {name: el.name});
// [ undefined, undefined ]
// I assumed to get back the following: [ {name: 'Susan'}, {name: 'Robert'} ]

Почему использование объекта в возвращаемой части функции map не разрешено?

  • 1
    Попробуйте это let newStudents = students.map((el) => {return {name: el.name}});
Теги:
iteration
map-function

1 ответ

4

Вам нужно обернуть объект в круглую скобку функции.

let newStudents = students.map((el) => ({name: el.name}));
                                        ^              ^

let students = [{name: 'Susan', grades: [88, 38, 28]}, {name: 'Robert', grades: [28,97, 17]}];
let newStudents = students.map((el) => ({name: el.name}));
console.log(newStudents);
  • 0
    Ах, хорошо, спасибо. И почему именно мне нужны лишние скобки?
  • 1
    Это вызывает явный возврат. Без них или return фигурные скобки обозначают функциональный блок.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню