Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не работает reduce (https://javascript.ru/forum/misc/83005-pochemu-ne-rabotaet-reduce.html)

lgick 24.08.2021 17:48

Почему не работает reduce
 
let vasya = { name: "Вася", age: 25 };
let petya = { name: "Петя", age: 30 };
let masha = { name: "Маша", age: 28 };

let users = [ vasya, petya, masha ]


let names = users.reduce((arr, user) => arr.push(user.name), [])

alert(names)


Я ожидал, что arr будет массивом имён, но при второй и последующих итерациях там undefined, а не массив

рони 24.08.2021 17:57

lgick,
где return arr?!!!

ksa 24.08.2021 17:57

Цитата:

Сообщение от lgick
Я ожидал, что arr будет массивом имён

Тогда логичнее так

let vasya = { name: "Вася", age: 25 };
let petya = { name: "Петя", age: 30 };
let masha = { name: "Маша", age: 28 };

let users = [ vasya, petya, masha ]

let names = users.map(el => el.name)
alert(names)

рони 24.08.2021 17:59

lgick,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

lgick 24.08.2021 18:15

let vasya = { name: "Вася", age: 25 };
let petya = { name: "Петя", age: 30 };
let masha = { name: "Маша", age: 28 };

let users = [ vasya, petya, masha ]


let names = users.reduce((arr, user) => {
arr.push(user.name)
return arr

}, [])

alert(names)




так работает, но я думал без "{", "}" и return тоже должно работать

рони 24.08.2021 18:33

Цитата:

Сообщение от lgick
думал без "{", "}"

можно и без {}, но возвращать arr нуно!
Оператор «запятая»

lgick 24.08.2021 18:47

let vasya = { name: "Вася", age: 25 };
let petya = { name: "Петя", age: 30 };
let masha = { name: "Маша", age: 28 };

let users = [ vasya, petya, masha ]


let names = users.reduce((arr, user) => (arr.push(user.name), arr), [])

alert(names)



работает.

рони 24.08.2021 18:48

lgick,
/ добавьте

рони 24.08.2021 18:49

Цитата:

Сообщение от lgick
работает.

:dance:

lgick 24.08.2021 18:49

пытаюсь, нажимаю сохранить, а он не сохраняет)


Часовой пояс GMT +3, время: 07:42.