[英]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.