I need to add an object identified by a key in an array that specifies the id in the course property.
The Array
[{
"course": 1035, <- The id to find in the objects
"start_time": "2018-01-04T20:55:00Z",
"end_time": "2018-01-04T22:00:00Z",
"details": { <- it has to be created
<- here the corresponding object according to the id,
in this case 1035
}
}, {
"course": 1106,
"start_time": "2018-01-04T21:00:00Z",
"end_time": "2018-01-04T22:00:00Z",
}]
The Objects
{
"1035": {
"id": 1035,
"title": "Some Title1",
"slug": "live-show",
"free": true,
"order": 0,
"color": "#CB13A1"
},
"1106": {
"id": 1106,
"title": "Some Title2",
"slug": "live-show",
"free": true,
"order": 0,
"color": "#CB13A1"
}
}
The expected result
[{
"course": 1035,
"start_time": "2018-01-04T20:55:00Z",
"end_time": "2018-01-04T22:00:00Z",
"details": {
"id": 1035,
"title": "Some Title1",
"slug": "live-show",
"free": true,
"order": 0,
"color": "#CB13A1"
}
}, {
"course": 1106,
"start_time": "2018-01-04T21:00:00Z",
"end_time": "2018-01-04T22:00:00Z",
"details": {
"id": 1106,
"title": "Some Title2",
"slug": "live-show",
"free": true,
"order": 0,
"color": "#CB13A1"
}
}]
asked Jan 3, 2018 at 18:24
Nicolás A. Rodríguez
5205 silver badges13 bronze badges
-
1see if one the answers solve your problemMichele Dibenedetto– Michele Dibenedetto2018年01月03日 18:43:11 +00:00Commented Jan 3, 2018 at 18:43
3 Answers 3
One-liner without mutating your objects/arrays (which is generally a bad idea).
target.map(item => Object.assign({}, item, { details: source[item.course]}));
where target = The Array and source = The Objects
answered Jan 3, 2018 at 18:56
Nayeem Zen
2,8171 gold badge19 silver badges16 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
var arr =[{
"course": 1035,
"start_time": "2018-01-04T20:55:00Z",
"end_time": "2018-01-04T22:00:00Z",
"details": {
}
}, {
"course": 1106,
"start_time": "2018-01-04T21:00:00Z",
"end_time": "2018-01-04T22:00:00Z",
}];
var obj = {
"1035": {
"id": 1035,
"title": "Some Title1",
"slug": "live-show",
"free": true,
"order": 0,
"color": "#CB13A1"
},
"1106": {
"id": 1106,
"title": "Some Title2",
"slug": "live-show",
"free": true,
"order": 0,
"color": "#CB13A1"
}
};
arr.forEach(item=>{
item.details = obj[item.course];
});
console.log(arr);
/*RESULT:
[
{
"course": 1035,
"start_time": "2018-01-04T20:55:00Z",
"end_time": "2018-01-04T22:00:00Z",
"details": {
"id": 1035,
"title": "Some Title1",
"slug": "live-show",
"free": true,
"order": 0,
"color": "#CB13A1"
}
},
{
"course": 1106,
"start_time": "2018-01-04T21:00:00Z",
"end_time": "2018-01-04T22:00:00Z",
"details": {
"id": 1106,
"title": "Some Title2",
"slug": "live-show",
"free": true,
"order": 0,
"color": "#CB13A1"
}
}
]
*/
answered Jan 3, 2018 at 18:38
Michele Dibenedetto
5754 silver badges13 bronze badges
Comments
You can do it like this:
Object.keys(object).map(key => {
const obj = object[key]
// here, you can add all missed keys to your object
return obj
})
answered Jan 3, 2018 at 18:26
Sergii Rudenko
2,6841 gold badge24 silver badges25 bronze badges
Comments
lang-js