I have details of the students; how to get my expected output? In one object I want the name of the student as key and an array of their car names as value
let empArray = [{
"name": "soma",
"cars Details": [{
"name": "audi",
"cost": 120000,
"Speed": "150Km/hr"
}, {
"name": "toyota",
"cost": 120000,
"Speed": "150Km/hr"
}],
"salary": 40000
},
{
"name": "steven",
"cars Details": [{
"name": "bmw",
"cost": 120000,
"Speed": "150Km/hr"
}],
"salary": 70000
},
{
"name": "booth",
"cars Details": [{
"name": "swift",
"cost": 120000,
"Speed": "150Km/hr"
}, {
"name": "audi",
"cost": 120000,
"Speed": "150Km/hr"
}],
"salary": 35000
},
]
let a = {}
var ids = [];
for (let i = 0; i < empArray.length; i++) {
a = empArray[i]["cars Details"]
console.log(a)
}
Expected Output
{soma :["audi","toyota"],steven:["bmw"],booth:["swift","audi"]}
secan
2,6771 gold badge9 silver badges24 bronze badges
asked Jul 26, 2021 at 10:32
soma iyappan
5401 gold badge8 silver badges19 bronze badges
3 Answers 3
let empArray = [{ "name": "soma", "cars Details": [{ "name": "audi", "cost": 120000, "Speed": "150Km/hr" }, { "name": "toyota", "cost": 120000, "Speed": "150Km/hr" }], "salary": 40000 }, { "name": "steven", "cars Details": [{ "name": "bmw", "cost": 120000, "Speed": "150Km/hr" }], "salary": 70000 }, { "name": "booth", "cars Details": [{ "name": "swift", "cost": 120000, "Speed": "150Km/hr" }, { "name": "audi", "cost": 120000, "Speed": "150Km/hr" }], "salary": 35000 },]
let dict = {}
empArray.forEach((e) => {
dict[e.name] = e["cars Details"].map((car) => {
return car.name
})
})
console.log(dict)
pilchard
13.1k5 gold badges14 silver badges28 bronze badges
answered Jul 26, 2021 at 10:36
muhammed ikinci
7472 gold badges6 silver badges19 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
You can use Array.prototype.reduce() and Array.prototype.map() to do:
// input
let empArray = [{
"name": "soma",
"cars Details": [{
"name": "audi",
"cost": 120000,
"Speed": "150Km/hr"
}, {
"name": "toyota",
"cost": 120000,
"Speed": "150Km/hr"
}],
"salary": 40000
},
{
"name": "steven",
"cars Details": [{
"name": "bmw",
"cost": 120000,
"Speed": "150Km/hr"
}],
"salary": 70000
},
{
"name": "booth",
"cars Details": [{
"name": "swift",
"cost": 120000,
"Speed": "150Km/hr"
}, {
"name": "audi",
"cost": 120000,
"Speed": "150Km/hr"
}],
"salary": 35000
},
];
const output = empArray.reduce((outObj, item) => {
outObj[item.name] = item['cars Details'].map(detail => detail.name);
return outObj
}, {});
// test
console.log(output)
By the way, if you can, I'd recommend avoiding object keys containing spaces and change cars Details to carsDetails
answered Jul 26, 2021 at 10:46
secan
2,6771 gold badge9 silver badges24 bronze badges
Comments
let empArray=[{name:"soma","cars Details":[{name:"audi",cost:12e4,Speed:"150Km/hr"},{name:"toyota",cost:12e4,Speed:"150Km/hr"}],salary:4e4},{name:"steven","cars Details":[{name:"bmw",cost:12e4,Speed:"150Km/hr"}],salary:7e4},{name:"booth","cars Details":[{name:"swift",cost:12e4,Speed:"150Km/hr"},{name:"audi",cost:12e4,Speed:"150Km/hr"}],salary:35e3}];
let result = empArray.reduce((acc,e) => ({[e.name]:e['cars Details'].map(n => n.name),...acc}), {} )
console.log(result)
answered Jul 26, 2021 at 10:50
Alan Omar
4,2971 gold badge13 silver badges26 bronze badges
Comments
lang-js