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);