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)
    }
})