15.08.2021, 19:10
|
|
Аспирант
|
|
Регистрация: 23.11.2013
Сообщений: 96
|
|
Как сделать функцию
Подскажите как сделать наиболее короткую функцию используя 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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
lgick,
пока так ...
const createObj = (...props) => Object.fromEntries(new Map(props.map(a => [a,a])));
console.log(createObj('a', 'b', 'c'))
|
|
15.08.2021, 19:59
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
lgick,
или так ... )))
const createObj = (...props) => props.reduce((a, b) => Object.assign( a, {[b] : b}), {});
console.log(createObj('a', 'b', 'c'))
|
|
15.08.2021, 20:03
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,010
|
|
const createObj = (...a) => a.reduce((o, v) => ({...o, [v]: v}), {});
|
|
15.08.2021, 20:04
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
lgick,
const createObj = (...props) => props.reduce((a, b) => ({...a, [b] : b}), {});
console.log(createObj('a', 'b', 'c'))
|
|
15.08.2021, 20:04
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,103
|
|
Alexandroppolus,
|
|
15.08.2021, 20:05
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,010
|
|
хотя спредов по-моему нет в этом вашем es6
const createObj = (...a) => a.reduce((o, v) => (o[v] = v, o), {});
|
|
15.08.2021, 21:42
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
const createObj = (...a) => Object.fromEntries(a.map(v => [v, v]))
const createObj = (...a) => (o => (a.forEach(v => o[v] = v), o))({})
еще парочка вариантов
|
|
15.08.2021, 23:49
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,569
|
|
const createObj = (...a) => Object.fromEntries(new Set(a).entries())
__________________
29375, 35
|
|
|
|