Filter 如何使用下划线根据嵌套对象筛选对象数组?
我目前正在尝试根据子对象筛选对象数组。对象的结构如下所示:Filter 如何使用下划线根据嵌套对象筛选对象数组?,filter,nested,underscore.js,javascript-objects,Filter,Nested,Underscore.js,Javascript Objects,我目前正在尝试根据子对象筛选对象数组。对象的结构如下所示: { name: 'foo', status: 'fail', rules: [ { name: 'bar', result: 'fail' }, // so on and so forth ~13 rules ] } var data = _.where(this.resultsCollection.toJS
{
name: 'foo',
status: 'fail',
rules: [
{
name: 'bar',
result: 'fail'
},
// so on and so forth ~13 rules
]
}
var data = _.where(this.resultsCollection.toJSON(), {
rules: params.rules // params.rules being the array with name and result
});
我想将我的结果筛选到所有具有规则a
和状态:失败
,规则b和状态:通过
的对象
到目前为止,我的情况如下:
这仅适用于一个参数:
var data = _.filter(this.resultsCollection.toJSON(), function(obj) {
return _.some(obj.rules, {name:params.rules[0].name});
});
对我来说,这应该有效,而且更符合我的需要,因为。有些只接受一个参数,但不接受(只是将其更改为。):
实际上,我想要的是更像这样的东西:
{
name: 'foo',
status: 'fail',
rules: [
{
name: 'bar',
result: 'fail'
},
// so on and so forth ~13 rules
]
}
var data = _.where(this.resultsCollection.toJSON(), {
rules: params.rules // params.rules being the array with name and result
});
它通过以下方式进行过滤:
var data = _.where(this.resultsCollection.toJSON(), {status:'fail'});
最终使用了香草javascript过滤器
var data = this.resultsCollection.toJSON().filter(function(obj) {
for (var i = 0; i < params.rules.length; i++) {
var rule = params.rules[i];
for (var k = 0; k < obj.rules.length; k++) {
if(obj.rules[k].name.toLowerCase() == rule.name.toLowerCase()) {
if(obj.rules[k].result.toLowerCase() !== rule.result.toLowerCase()) {
return false;
} else {
break;
}
}
if(i === obj.rules.length - 1) return false;
}
}
return true;
});
var data=this.resultCollection.toJSON().filter(函数(obj){
对于(变量i=0;i
最终使用了香草javascript过滤器
var data = this.resultsCollection.toJSON().filter(function(obj) {
for (var i = 0; i < params.rules.length; i++) {
var rule = params.rules[i];
for (var k = 0; k < obj.rules.length; k++) {
if(obj.rules[k].name.toLowerCase() == rule.name.toLowerCase()) {
if(obj.rules[k].result.toLowerCase() !== rule.result.toLowerCase()) {
return false;
} else {
break;
}
}
if(i === obj.rules.length - 1) return false;
}
}
return true;
});
var data=this.resultCollection.toJSON().filter(函数(obj){
对于(变量i=0;i