@Mr_Epic
Web программист

Как преобразовать массив объектов в один объект, одной строкой?

function arr_to_obj(arr){
	var obj = {};
	arr.forEach(el=>obj[el.name]=el.data);
	return obj;
}
arr_to_obj([
    {name:'t1',data: 11},
    {name: 't2', data: 22}
]);

Результат:
{
    t1: 11,
    t2: 22
}

Нужно сократить код функции arr_to_obj, до одной строки.
Возможно для этого есть какая-то функция?
Допускается использование ECMAScript 6 и Lodash.
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
@abberati
frontend-разработчик
Для таких целей отлично подходит Array.prototype.reduce:

const arrToObj = arr => arr.reduce((acc, item) => ({...acc, [item.name]: item.data}), {})


в js принята camelCase нотация
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vith77
const arr_to_obj = arr => arr.map(el => ({ [el.name]: el.data } ) ) ;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы