如何在过滤数组时仅在值非undefined时应用对应条件?
实现带可选条件的数组过滤
你只需要给每个过滤条件加上「变量未定义则跳过检查」的判断逻辑即可,修改后的代码如下:
this.subAgencies = demoSubAgencies.filter(function(subAgency) { return (agencyName === undefined || subAgency.subAgencyName === agencyName) && (taxId === undefined || subAgency.taxId === taxId) && (accountNumber === undefined || subAgency.accountNumber === accountNumber); });
逻辑说明:
- 每个条件都采用
[参数未定义] || [属性匹配参数]的结构:- 若参数(如
taxId)为undefined,参数 === undefined结果为true,该条件自动成立,不会对当前子机构做过滤限制 - 若参数有具体值,则会校验子机构的对应属性是否与参数相等,只有相等才会保留该子机构
- 若参数(如
如果需要同时兼容null和undefined的场景(即参数为null时也跳过过滤),可以把判断改成参数 == null,示例:
(taxId == null || subAgency.taxId === taxId)
内容的提问来源于stack exchange,提问作者noclist
相关产品推荐
相关产品推荐

