繁体   English   中英

过滤对象的嵌套数组

[英]Filtering nested array of objects

我有以下events数组。 对于每个事件,都有一个哈希, {organisation name: [{participant 1}, {participant 2}, {...}]}{organisation name: [{participant 1}, {participant 2}, {...}]}

"events": [
    {
        "Org A": [
            {
                "event_id": 1,
                "id": 432,
                "name": "John Doe",
                "role": null
            },
            {
                "event_id": 1,
                "id": 312,
                "name": "Jane Mow",
                "role": [
                  "speaker"
                ]
            }
        ],
    }
],

我想过滤此events数组以仅包含其角色包含speaker参与者。 同样,当参与者数组中没有发言人时,需要从哈希(对象)中删除相应的组织条目。

为了过滤对象数组,我尝试使用以下方法:

_.each(events, function(event){
  _.filter(event, function(p) { 
   _.filter(p, function(d){ 
     return _.some(d.role, function(r){ 
      return r == "speaker"}) 
    }) 
  }) 
})   

但是,这不起作用。

尝试这个

 var data = { "events": [{ "Org A": [{ "event_id": 1, "id": 432, "name": "John Doe", "role": null }, { "event_id": 1, "id": 312, "name": "Jane Mow", "role": [ "speaker" ] }], "Org B": [], "Org C": [] }] }; var SPEAKER = 'speaker'; var result = _.map(data.events, function (events) { return _.chain(events) .mapObject(function (value, key) { return _.filter(value, function (event) { return _.isArray(event.role) && _.indexOf(event.role, SPEAKER) >= 0; }); }) .pick(function (value) { return value && value.length; }) .value(); }) console.log(result); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM