Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать функцию (https://javascript.ru/forum/misc/82963-kak-sdelat-funkciyu.html)

lgick 15.08.2021 19:10

Как сделать функцию
 
Подскажите как сделать наиболее короткую функцию используя es6

const createObj = (...props) => ???


Чтоб при вызове:

createObj('a', 'b', 'c')

Получить

{'a': 'a', 'b': 'b', 'c': 'c'}

Хотелось бы, чтоб при создании объекта, его ключи и значения задавались короткой записью: вместо {'a': 'a'}, просто {'a'} ( как тут https://learn.javascript.ru/object#s...-iz-peremennoy)

рони 15.08.2021 19:48

lgick,
пока так ...
const createObj = (...props) => Object.fromEntries(new Map(props.map(a => [a,a])));
console.log(createObj('a', 'b', 'c'))

рони 15.08.2021 19:59

lgick,
или так ... )))
const createObj = (...props) => props.reduce((a, b) => Object.assign( a, {[b] : b}), {});
console.log(createObj('a', 'b', 'c'))

Alexandroppolus 15.08.2021 20:03

const createObj  = (...a) => a.reduce((o, v) => ({...o, [v]: v}), {});

рони 15.08.2021 20:04

lgick,
const createObj = (...props) => props.reduce((a, b) => ({...a, [b] : b}), {});
console.log(createObj('a', 'b', 'c'))

рони 15.08.2021 20:04

Alexandroppolus,
:)

Alexandroppolus 15.08.2021 20:05

хотя спредов по-моему нет в этом вашем es6

const createObj  = (...a) => a.reduce((o, v) => (o[v] = v, o), {});

Vlasenko Fedor 15.08.2021 21:42

const createObj = (...a) => Object.fromEntries(a.map(v => [v, v]))
const createObj = (...a) => (o => (a.forEach(v => o[v] = v), o))({})

еще парочка вариантов

Aetae 15.08.2021 23:49

const createObj = (...a) => Object.fromEntries(new Set(a).entries())


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