Как из массива объектов сделать объект?
Массив примерно из 5-6 тысяч значений, хотелось бы как то оптимизацию еще учесть
Ключ id всегда уникальный
let objArr = [
{ id: 2, name: 'Test2', },
{ id: 3, name: 'Test3', },
{ id: 5, name: 'Test5', },
{ id: 6, name: 'Test6', },
];
Из массива объектов сделать объект где значение id сделать ключом
let obj = {
2: { id: 2, name: 'Test2', },
3: { id: 3, name: 'Test3', },
5: { id: 5, name: 'Test5', },
6: { id: 6, name: 'Test6', },
};
Ответы (3 шт):
Автор решения: Listopad02
→ Ссылка
У меня получилось решить через Object.Assign:
let objArr = [
{ id: 2, name: 'Test2', },
{ id: 3, name: 'Test3', },
{ id: 5, name: 'Test5', },
{ id: 6, name: 'Test6', },
];
Object.assign({}, ...objArr.map(n => ({ [n.id]: n })))
// {
// 2: {id: 2, name: "Test2"},
// 3: {id: 3, name: "Test3"},
// 5: {id: 5, name: "Test5"},
// 6: {id: 6, name: "Test6"}
// }
Автор решения: ksa
→ Ссылка
Как из массива объектов сделать объект?
Предложу такой вариант...
let arr = [
{ id: 2, name: 'Test2', },
{ id: 3, name: 'Test3', },
{ id: 5, name: 'Test5', },
{ id: 6, name: 'Test6', },
];
const obj = arr.reduce((o, v) => (o[v.id] = v, o), {})
console.log(obj)
Автор решения: ΝNL993
→ Ссылка
Вот несколько вариантов которые мне удалось придумать.
Вариант 1
Самый очевидный (имо) способ:
const objArr = [
{ id: 2, name: 'Test2', },
{ id: 3, name: 'Test3', },
{ id: 5, name: 'Test5', },
{ id: 6, name: 'Test6', }
]
const resultObj = convertToObj(objArr)
console.log(resultObj)
function convertToObj(arr) {
const result = {}
for (let i = 0; i < arr.length; i++) {
const arrItem = arr[i]
const itemId = arrItem.id
result[itemId] = arrItem
}
return result
}
Вариант 2
const objArr = [
{ id: 2, name: 'Test2', },
{ id: 3, name: 'Test3', },
{ id: 5, name: 'Test5', },
{ id: 6, name: 'Test6', }
]
const resultObj = convertToObj(objArr)
console.log(resultObj)
function convertToObj(arr) {
return arr.reduce((acc, elem) => ({ ...acc, [elem.id]: elem }), {})
}
Вариант 3
const objArr = [
{ id: 2, name: 'Test2', },
{ id: 3, name: 'Test3', },
{ id: 5, name: 'Test5', },
{ id: 6, name: 'Test6', }
]
const resultObj = convertToObj(objArr)
console.log(resultObj)
function convertToObj(arr) {
return Object.fromEntries(arr.map((elem) => [elem.id, elem]))
}