Почему не работает 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, а не массив |
lgick,
где return 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)
|
lgick,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
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 тоже должно работать |
Цитата:
Оператор «запятая» |
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)
работает. |
lgick,
/ добавьте |
Цитата:
|
пытаюсь, нажимаю сохранить, а он не сохраняет)
|
lgick,
в расширенный режим перейдите и там сделайте правку |
Цитата:
Если для этого и сделан map(). |
lgick,
с форматированием ок! |
Цитата:
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.concat([user.name]), [])
alert(names)
|
ksa, вы делаете GC больно.
|
ksa,
:)
let vasya = { name: "Вася", age: 25 };
let petya = { name: "Петя", age: 30 };
let masha = { name: "Маша", age: 28 };
let users = [ vasya, petya, masha ]
let names = Array.from(users, ({name}) => name)
alert(names)
|
import { map } from 'lodash';
let names = map(users, 'name');
|
Цитата:
|
Цитата:
|
Цитата:
|
ну если мы извращаемся, то ожно и так:
let names = users.reduce((arr, { name }) => arr.concat(name), [])
У нас же в name не окажется массива.) Или так, чтоб движку совсем поплохело:
let names = users.reduce((arr, { name }) => [...arr, name], [])
|
Столько всего понаделали массивам и не только... Старые, добрые циклы уже не в чести. :(
|
Ага, некоторые популярные стайлгайды вообще прямо говорят не юзать нормальные циклы в ползу методов.
|
Цитата:
|
Вы уже запугали словами... :D
Один про Гранд Каньон, другой про арифметические функции загибает... |
| Часовой пояс GMT +3, время: 15:59. |