javascript: создать массив с заданными ключами через метод map

подскажите можно ли в JS решить следующую задачу (что называется в одну строку через map)

есть массив ключей:

arr = ['a', 'b', 'c']

необходимо создать массив где каждому ключу будет поставлено в соответствие некоторый элемент (для удобства в примере его индекс), т.е. на выходе должно получиться

{a:'0', b:'1', c:'2'}

Можно ли это сделать через map, что-то типа

res = arr.map((v, i) => {v: i})

?

Потому что не хочется делать такие вещи через циклы for или метод forEach


Ответы (2 шт):

Автор решения: EzioMercer

Вам нужен не map, а reduce:

const arr = ['a', 'b', 'c'];

const obj = arr.reduce((result, el, index) => {
  result[el] = index + '';
  
  return result;
}, {});

console.log(obj);

Ну если нужно именно в 1 строку, то можно так:

const arr = ['a', 'b', 'c'];

const obj = arr.reduce((result, el, index) => (result[el] = index + '', result), {});

console.log(obj);

→ Ссылка
Автор решения: Grundy

Для конкретного случая массива где нужно поменять ключи и значения местами можно использовать Object.entries и обратным методом Object.fromEntries

const arr = ['a', 'b', 'c'];

const obj = Object.fromEntries( // собираем объект
  Object.entries(arr) // получаем список [[key, val], [key, val], ...]
  .map(([key, val]) => [val, key])); // меняем местами key и val [[val, key], [val, key], ...]

console.log(obj);

→ Ссылка