Can any please help me for converting following arrays into object:
let data = [
{ name: "A", job: "soft", address: "ggn" },
{ name: "B", job: "software", address: "GGN" },
{ name: "C", job: "software", address: "GGN" },
];
Output: {
“A”:{job: “software”, address: “GGN”},
“B”:{job: “software”, address: “GGN”},
“C”:{job: “software”, address: “GGN”}
};
Here I don't want name and its value of objects.
I tried using the following solution:
const output = data.reduce((object, x) => {
return { ...object, [x.name]: x };
}, {});
But I am getting different answer. Can somebody help by giving optimum solution. We can solve it using reduce and rest operator.
You can use it like this:
let data = [
{ name: "A", job: "soft", address: "ggn" },
{ name: "B", job: "software", address: "GGN" },
{ name: "C", job: "software", address: "GGN" },
];
const output = data.reduce((acc, curr) => {
const { name, ...rest } = curr;
acc[name] = rest
return acc;
}, {});
OR:
const output = data.reduce((acc, curr) => {
const { name, ...rest } = curr;
return { ...acc, [name]: rest };
}, {});
You can do like this
let data = [{
name: "A",
job: "soft",
address: "ggn"
},
{
name: "B",
job: "software",
address: "GGN"
},
{
name: "C",
job: "software",
address: "GGN"
},
];
const output = data.reduce((object, x) => {
const {
name,
job,
address
} = x;
object[name] = {
job,
address
}
return object;
}, {});
console.log(output)
let data = [
{name: 'A', job: 'soft', address: 'ggn'},
{name: 'B', job: 'software', address: 'GGN'},
{name: 'C', job: 'software', address: 'GGN'},
];
const output = {};
const obj = data.reduce((acc, el) => {
const { name, job, address } = el;
return { ...acc, [name]: { job, address} };
}, output);
console.log(obj);