Reputation: 333
I have two arrays. For example something like this:
"results": [
{
"seen": false,
"_id": "5f6a9608c248df5c14a6aa53",
"user_id": "5f69264fe410854be4840e9f",
"invited_user_id": "5f69254ee410854be4840e99",
"createdAt": "2020-09-23T00:25:44.314Z",
"__v": 0
},
{
"seen": false,
"_id": "5f6a943d8d745b422cd67796",
"user_id": "5f69264fe410854be4840e9f",
"invited_user_id": "5f69254ee410854be4840e99",
"createdAt": "2020-09-23T00:18:05.634Z",
"__v": 0
}
],
"users": [
{
"_id": "5f69254ee410854be4840e99",
"name": "Paweł",
"surname": "mnv"
},
{
"_id": "5f692626e410854be4840e9c",
"name": "Sebastian",
"surname": "fasd"
}
]
and now I would like to replace the "invited_user_id" form results array with user object from users array when results.invited_user_id === users._id.
What I want to get :
"results": [
{
"seen": false,
"_id": "5f6a9608c248df5c14a6aa53",
"user_id": "5f69264fe410854be4840e9f",
"invited_user_id": {
"_id": "5f69254ee410854be4840e99",
"name": "Paweł",
"surname": "mnv"
},
"createdAt": "2020-09-23T00:25:44.314Z",
"__v": 0
},
{
"seen": false,
"_id": "5f6a943d8d745b422cd67796",
"user_id": "5f69264fe410854be4840e9f",
"invited_user_id": {
"_id": "5f692626e410854be4840e9c",
"name": "Sebastian",
"surname": "fasd"
},
"createdAt": "2020-09-23T00:18:05.634Z",
"__v": 0
}
]
I could write some long function which would do that, but I am wonder if there is any faster way to do this ?
Upvotes: 0
Views: 56
Reputation: 2367
Yeah....
let data = // here put your JSON
let results = []
data['results'].forEach(result =>{
data['users'].forEach(user => {
if(result.invited_user_id === user._id){
result.invited_user_id = user
results.push(result)
}
})
})
let finalData = {
'results': results
}
console.log(finalData)
Now finalData have the JSON do you want.
Upvotes: 1