Javascript 根据键和值的对象数组
我有一个对象数组根据其动作类型键将数据保存在对象中 我的数组对象数据Javascript 根据键和值的对象数组,javascript,arrays,json,object,arraylist,Javascript,Arrays,Json,Object,Arraylist,我有一个对象数组根据其动作类型键将数据保存在对象中 我的数组对象数据 var jsonData = [ { "id":"1000000", "action_type":"sms" },{ "id":"1000001", "action_type":"push" },{ "id":"1000002", "action_type":"email" },{ "i
var jsonData = [
{
"id":"1000000",
"action_type":"sms"
},{
"id":"1000001",
"action_type":"push"
},{
"id":"1000002",
"action_type":"email"
},{
"id":"1000003",
"action_type":"push"
},{
"id":"1000004",
"action_type":"email"
},{
"id":"1000005",
"action_type":"sms"
}
];
我想根据数据的动作类型将数据存储到多个对象数组中,以便根据它们的类型执行动作
var ObjectSms = [{"id":"1000000","action_type":"sms"},{"id":"1000005","action_type":"sms" }];
var ObjectPush = [{"id":"1000001","action_type":"push"},{"id":"1000003","action_type":"push" }];
var ObjectEmail = [{"id":"1000002","action_type":"email"},{"id":"1000004","action_type":"email" }];
以便根据其动作类型执行动作
if(action_type == "sms"){
sendSmsFunction(ObjectSms);
}
if(action_type == "email"){
sendEmailFunction(ObjectEmail);
}
if(action_type == "push"){
sendPushFunction(ObjectPush);
}
您可以使用分解分配和减少()来实现该结果:
var jsonData=[{
“id”:“1000000”,
“操作类型”:“sms”
}, {
“id”:“1000001”,
“操作类型”:“推送”
}, {
“id”:“1000002”,
“操作类型”:“电子邮件”
}, {
“id”:“1000003”,
“操作类型”:“推送”
}, {
“id”:“1000004”,
“操作类型”:“电子邮件”
}, {
“id”:“1000005”,
“操作类型”:“sms”
}];
常数{
反对者,
ObjectPush,
反对电子邮件
}=jsonData.reduce((a,c)=>{
如果(c.action_type=='sms'){
a、 ObjectSms.push(c)
}else if(c.action_type===‘push’){
a、 ObjectPush.push(c)
}else if(c.action_type===‘email’){
a、 ObjectEmail.push(c)
}
归还
}, {
ObjectSms:[],
ObjectPush:[],
ObjectEmail:[]
})
console.log('ObjectSms',ObjectSms)
log('ObjectPush',ObjectPush)
log('ObjectEmail',ObjectEmail)
希望您正在使用。使用lodash过滤器功能,您可以执行以下操作:
var jsonData = [
{
"id":"1000000",
"action_type":"sms"
},{
"id":"1000001",
"action_type":"push"
},{
"id":"1000002",
"action_type":"email"
},{
"id":"1000003",
"action_type":"push"
},{
"id":"1000004",
"action_type":"email"
},{
"id":"1000005",
"action_type":"sms"
}];
const smsArr = [];
const emailArr = [];
_.filter(jsonData, d => {
if(d.action_type == "sms"){
smsArr.push(d)
}
else if (d.action_type == "email"){
emailArr.push(d)
}
})
你能说明你的问题是什么吗?这不是JSON。这是一个对象数组你的问题是什么?如果是lodash,那么我认为.groupBy()将是解决这个问题的合适函数。
var jsonData = [
{
"id":"1000000",
"action_type":"sms"
},{
"id":"1000001",
"action_type":"push"
},{
"id":"1000002",
"action_type":"email"
},{
"id":"1000003",
"action_type":"push"
},{
"id":"1000004",
"action_type":"email"
},{
"id":"1000005",
"action_type":"sms"
}];
const smsArr = [];
const emailArr = [];
_.filter(jsonData, d => {
if(d.action_type == "sms"){
smsArr.push(d)
}
else if (d.action_type == "email"){
emailArr.push(d)
}
})