Вы можете взять массив, затем использовать Array#reduce
и Object.assign
, чтобы сгенерировать объект там, где:
- Ключ - это элемент из массива.
- Значение увеличивается на степень 2, начиная с нуля.
let errors=[
'none',
'subject',
'content',
'sender',
'recipient'
]
const Errors = errors.reduce(
(acc, item, index) => Object
.assign(
acc,
{[item]: Math.floor(2 ** (index - 1))}
),
{}
)
console.log(Errors)
Или с помощью арифметического бита c для получения степеней 2 только путем установки бита n-1
, начиная с 0
, когда n=0
:
let errors=[
'none',
'subject',
'content',
'sender',
'recipient'
]
const Errors = errors.reduce(
(acc, item, index) => Object
.assign(
acc,
{[item]: (1 << index) >> 1}
),
{}
)
console.log(Errors)