_Filrer 过滤 JSON 多个条件
_Filrer to filter JSON with multiple condition
[
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 2,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 3,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": false,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 2,
"Employee_Role_Nm": "Tax Prep"
}
]
}
]
我如何使用 _.filter 过滤条件
1.Employee_Role_Id 1 或 3
2.Active_Ind 为真
var activeEmployee = _.filter(employees, function (employee) {
return _.some(employee.Employee.EmployeeRoles, { 'Employee_Role_Id': 1 });
})
;
你可以这样做:
var employees = [{"Employee_Id": 252156,"Active_Ind": true,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"}]},{"Employee_Id": 252156,"Active_Ind": true,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"},{"Employee_Role_Id": 2,"Employee_Role_Nm": "Tax Prep"}]},{"Employee_Id": 252156,"Active_Ind": true,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"},{"Employee_Role_Id": 3,"Employee_Role_Nm": "Tax Prep"}]},{"Employee_Id": 252156,"Active_Ind": false,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"},{"Employee_Role_Id": 2,"Employee_Role_Nm": "Tax Prep"}]}],
activeEmployee = _.filter(employees, function (employee) {
return employee.Active_Ind && _.some(employee.EmployeeRoles, function(role) {
return 1 === role.Employee_Role_Id || 3 === role.Employee_Role_Id;
});
});
console.log(activeEmployee);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
您可以将所有 Employee_Role_Id
值与您想要的值相交,而不是 some
:
var activeEmployee = _.filter(employees, e=>e.Active_Ind
&& _.intersection([1,3],_.pluck(e.EmployeeRoles,'Employee_Role_Id')).length);
let employees = [
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 2,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 3,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": false,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 2,
"Employee_Role_Nm": "Tax Prep"
}
]
}
];
var activeEmployee = _.filter(employees, e=>e.Active_Ind && _.intersection([1,3],_.pluck(e.EmployeeRoles,'Employee_Role_Id')).length);
console.log(activeEmployee);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
[
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 2,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 3,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": false,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 2,
"Employee_Role_Nm": "Tax Prep"
}
]
}
]
我如何使用 _.filter 过滤条件
1.Employee_Role_Id 1 或 3
2.Active_Ind 为真
var activeEmployee = _.filter(employees, function (employee) {
return _.some(employee.Employee.EmployeeRoles, { 'Employee_Role_Id': 1 });
})
;
你可以这样做:
var employees = [{"Employee_Id": 252156,"Active_Ind": true,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"}]},{"Employee_Id": 252156,"Active_Ind": true,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"},{"Employee_Role_Id": 2,"Employee_Role_Nm": "Tax Prep"}]},{"Employee_Id": 252156,"Active_Ind": true,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"},{"Employee_Role_Id": 3,"Employee_Role_Nm": "Tax Prep"}]},{"Employee_Id": 252156,"Active_Ind": false,"EmployeeRoles": [{"Employee_Role_Id": 1,"Employee_Role_Nm": "Tax Prep"},{"Employee_Role_Id": 2,"Employee_Role_Nm": "Tax Prep"}]}],
activeEmployee = _.filter(employees, function (employee) {
return employee.Active_Ind && _.some(employee.EmployeeRoles, function(role) {
return 1 === role.Employee_Role_Id || 3 === role.Employee_Role_Id;
});
});
console.log(activeEmployee);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
您可以将所有 Employee_Role_Id
值与您想要的值相交,而不是 some
:
var activeEmployee = _.filter(employees, e=>e.Active_Ind
&& _.intersection([1,3],_.pluck(e.EmployeeRoles,'Employee_Role_Id')).length);
let employees = [
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 2,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": true,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 3,
"Employee_Role_Nm": "Tax Prep"
}
]
},
{
"Employee_Id": 252156,
"Active_Ind": false,
"EmployeeRoles": [
{
"Employee_Role_Id": 1,
"Employee_Role_Nm": "Tax Prep"
},
{
"Employee_Role_Id": 2,
"Employee_Role_Nm": "Tax Prep"
}
]
}
];
var activeEmployee = _.filter(employees, e=>e.Active_Ind && _.intersection([1,3],_.pluck(e.EmployeeRoles,'Employee_Role_Id')).length);
console.log(activeEmployee);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>