这是我的json对象:
{
"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"
}
我想像这样转换上面的对象:
[
{"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"},
]
然后我只能在sequelize中批量插入。
如何使用for或foreach或任何其他功能?做这个东西?
更好吗?是否可以使用地图?
我想要我最后的json对象,然后只允许sequelize批量创建。
Ps:我想"选择":仅限json gsm数字
答案 0 :(得分:2)
在你的情况下,我使用for循环来制作JSON对象
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);
&#13;
&#13;
答案 1 :(得分:2)
尝试使用lodash
var result = _.flatten(data.groups.map( r => r.contactgroups))
.map(r => ({ gsm: r.contact.gsm, sender: "ifelse", message: "test" })
);
console.log(result);
更新#2 - 使用过滤器
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);