如何过滤含数组字段的对象数组?upType字段过滤实现
实现upType数组的过滤逻辑
要在原有过滤逻辑基础上添加upType数组的过滤,只需在filter回调中补充对应的判断条件即可。以下是修改后的完整代码:
const arrayList = [{ fNo: 343, origin: "Singapore", destination: "India", upType: ["Eco to PEco", "Eco to HClass"] }, { fNo: 363, origin: "Chennai", destination: "Singapore", upType: ["PEco to HClass"] }] // 示例过滤值,根据实际场景替换 const fNo = 343; const filterUpType = ["Eco to PEco"]; const filteredRulesData = arrayList.filter((data) => { // 原有fNo过滤逻辑 const matchesFNo = data.fNo.toString().includes(fNo.toString()); // 匹配upType:检查当前项的upType是否包含filterUpType中的任意一个值 const matchesUpType = filterUpType.some(targetType => data.upType.includes(targetType)); // 同时满足fNo和upType过滤条件(如需添加origin/destination过滤,直接追加判断即可) return matchesFNo && matchesUpType; });
逻辑说明
- 使用
Array.some()遍历filterUpType,只要当前项的upType包含其中任意一个目标类型,就判定为匹配。 - 如果需要同时满足filterUpType中的所有类型(而非任一),可以把
some()替换为every():const matchesUpType = filterUpType.every(targetType => data.upType.includes(targetType)); - 原有
origin、destination的过滤逻辑可以直接追加到返回条件中,比如:return matchesFNo && matchesUpType && data.origin.includes(filterOrigin) && data.destination.includes(filterDestination);
内容的提问来源于stack exchange,提问作者Saurabh Rauthan
相关产品推荐
相关产品推荐

