This is my json object:
{
"groups":
[
{
"id": 1,
"groupname": "Angular",
"createdAt": "2017-12-05T09:36:05.000Z",
"updatedAt": "2017-12-05T09:36:05.000Z",
"contactgroups": [
{
"id": 1,
"contact":
{
"gsm": "12345"
}
},
{
"id": 3,
"contact":
{
"gsm": "54321"
}
},
{
"id": 4,
"contact":
{
"gsm": "99999"
}
}],
"select": true
},
{
"id": 2,
"groupname": "React",
"createdAt": "2017-12-05T09:36:10.000Z",
"updatedAt": "2017-12-05T09:36:10.000Z",
"contactgroups": [
{
"id": 2,
"contact":
{
"gsm": "66666"
}
},
{
"id": 5,
"contact":
{
"gsm": "54321"
}
}],
"select": true
},
{
"id": 3,
"groupname": "Vue",
"createdAt": "2017-12-05T09:36:15.000Z",
"updatedAt": "2017-12-05T09:36:15.000Z",
"contactgroups": [
{
"id": 6,
"contact":
{
"gsm": "12345"
}
}]
},
],
"sender": "ifelse",
"message": "test"
}
I want to convert above object like this:
[
{"gsm": 12345, "sender": "ifelse", "message": "test"},
{"gsm": 54321, "sender": "ifelse", "message": "test"},
{"gsm": 99999, "sender": "ifelse", "message": "test"},
{"gsm": 66666, "sender": "ifelse", "message": "test"},
{"gsm": 54321, "sender": "ifelse", "message": "test"},
{"gsm": 12345, "sender": "ifelse", "message": "test"},
]
Then only i am able to bulk insert in sequelize.
How to do this using for or foreach or any other functions? to done this stuff?
is foreach better? is it possible to do with map?
I want my final json object, then only sequelize allowed to bulk create.
Ps: I want "select": true json gsm numbers only
In your case, I am using for loop to make JSON object
var data={ "groups": [ { "id": 1, "groupname": "Angular", "createdAt": "2017-12-05T09:36:05.000Z", "updatedAt": "2017-12-05T09:36:05.000Z", "contactgroups": [ { "id": 1, "contact": { "gsm": "12345" } }, { "id": 3, "contact": { "gsm": "54321" } }, { "id": 4, "contact": { "gsm": "99999" } }], "select": true }, { "id": 2, "groupname": "React", "createdAt": "2017-12-05T09:36:10.000Z", "updatedAt": "2017-12-05T09:36:10.000Z", "contactgroups": [ { "id": 2, "contact": { "gsm": "66666" } }, { "id": 5, "contact": { "gsm": "54321" } }], "select": true }, { "id": 3, "groupname": "Vue", "createdAt": "2017-12-05T09:36:15.000Z", "updatedAt": "2017-12-05T09:36:15.000Z", "contactgroups": [ { "id": 6, "contact": { "gsm": "12345" } }] }, ], "sender": "ifelse", "message": "test" } var result=[ {"gsm": 12345, "sender": "ifelse", "message": "test"}, {"gsm": 54321, "sender": "ifelse", "message": "test"}, {"gsm": 99999, "sender": "ifelse", "message": "test"}, {"gsm": 66666, "sender": "ifelse", "message": "test"}, {"gsm": 54321, "sender": "ifelse", "message": "test"}, {"gsm": 12345, "sender": "ifelse", "message": "test"}, ] var arr=[]; for(var i=0;i<data.groups.length;i++){ if(data.groups[i].select){ for(var j=0;j<data.groups[i].contactgroups.length;j++){ arr.push({gsm:data.groups[i].contactgroups[j].contact.gsm,sender:data.sender,message:data.message}); } } } console.log(arr);
Try with lodash
var result = _.flatten(data.groups.map( r => r.contactgroups))
.map(r => ({ gsm: r.contact.gsm, sender: "ifelse", message: "test" })
);
console.log(result);
Update #2 - With filter
var result = _.flatten(_.filter(data.groups,{'select': true }).map( r => r.contactgroups))
.map(r => ({ gsm: r.contact.gsm, sender: "ifelse", message: "test" })
);
console.log(result);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.