Почему не работает 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, время: 14:37. |