Javascript 使用下划线.js筛选多维数组

Javascript 使用下划线.js筛选多维数组,javascript,arrays,object,underscore.js,Javascript,Arrays,Object,Underscore.js,我有一个名为events的event对象数组。每个事件都有市场,一个包含市场对象的数组。在这里有另一个名为结果的数组,包含结果对象 我想使用下划线.js或其他一些方法来查找所有具有市场的事件,这些市场的结果具有名为test的属性 我想这可以通过使用一系列过滤器来实现,但我运气不好 我认为您可以使用underline.js和(又称“any”)方法来实现这一点: 试试这个: _.filter(events, function(me) { return me.event &&

我有一个名为
events
event
对象数组。每个
事件
都有
市场
,一个包含
市场
对象的数组。在这里有另一个名为
结果
的数组,包含
结果
对象

我想使用下划线.js或其他一些方法来查找所有具有市场的事件,这些市场的结果具有名为
test
的属性


我想这可以通过使用一系列过滤器来实现,但我运气不好

我认为您可以使用underline.js和(又称“any”)方法来实现这一点:

试试这个:

_.filter(events, function(me) { 
    return me.event && 
        me.event.market && me.event.market.outcome && 
        'test' in me.event.market.outcome
}); 

不需要下划线,您可以使用本机JS实现这一点

var events = [{markets:[{outcomes:[{test:x},...]},...]},...];
return events.filter(function(event) {
    return event.markets.some(function(market) {
        return market.outcomes.some(function(outcome) {
            return "test" in outcome;
        });
    });
});
当然,您也可以使用相应的下划线方法(和)。

var事件=[
{
id:'a',
市场:[{
结果:[{
测试:“哟”
}]
}]
},
{
id:'b',
市场:[{
结果:[{
未经测试:“哟”
}]
}]
},
{
id:'c',
市场:[{
结果:[{
注:“哟”
}]
}]
},
{
id:'d',
市场:[{
结果:[{
测试:“哟”
}]
}]
}
];
var matches=events.filter(函数(事件){
返回事件.市场.过滤器(功能(市场){
返回市场.结果.过滤器(功能(结果){
返回结果。hasOwnProperty(“测试”);
}).长度;
}).长度;
});
matches.forEach(函数(匹配){
document.writeln(匹配id);

});是否有反向参考?我的意思是从
结果
市场
等等。因为在这种情况下,你可以过滤所有与你的搜索匹配的
结果
对象,然后返回到
事件
,然后清理数组中的唯一元素。你能提供一个例子吗?我想可能用户指的是lodash.js,因为我没有看到一个u。在underline.js@Fasani中的任何方法都是underline,不是洛达斯<代码>\任何
都是
\的别名。有些
var events = [{markets:[{outcomes:[{test:x},...]},...]},...];
return events.filter(function(event) {
    return event.markets.some(function(market) {
        return market.outcomes.some(function(outcome) {
            return "test" in outcome;
        });
    });
});