如何基于参数中的单个或多个sector_title值过滤数组
数组按单个/多个sector_title值过滤的实现方案
没问题,咱们来解决这个数组过滤的问题——不管你的params是单个sector_title值还是一组值,都能轻松搞定。下面是一套灵活的实现方案,两种情况都能覆盖:
核心思路
我们可以利用数组的filter()方法来筛选符合条件的元素,关键是先把params统一转换成数组格式,这样不管输入是单个值还是数组,判断逻辑都能保持一致,不用写两套代码。
具体代码实现
情况1:params是单个字符串值
就像你给出的示例场景:
var params = "WOOLEN"; var arr = [ { "sector_title": "WOOLEN", "sector_rate": "44" }, { "sector_title": "GLASS", "sector_rate": "31" }, { "sector_title": "PALM", "sector_rate": "34" } ]; // 先将params统一转为数组(兼容单个值的情况) const targetSectors = Array.isArray(params) ? params : [params]; // 过滤数组,保留sector_title在目标集合中的元素 const filteredArr = arr.filter(item => targetSectors.includes(item.sector_title)); console.log(filteredArr); // 输出结果:[{"sector_title": "WOOLEN", "sector_rate": "44"}]
情况2:params是多个值的数组
如果你的参数是一组sector_title值,比如["WOOLEN", "GLASS"],直接用上面的逻辑就行,不需要改动:
var params = ["WOOLEN", "GLASS"]; var arr = [ { "sector_title": "WOOLEN", "sector_rate": "44" }, { "sector_title": "GLASS", "sector_rate": "31" }, { "sector_title": "PALM", "sector_rate": "34" } ]; const targetSectors = Array.isArray(params) ? params : [params]; const filteredArr = arr.filter(item => targetSectors.includes(item.sector_title)); console.log(filteredArr); // 输出结果:[{"sector_title": "WOOLEN", "sector_rate": "44"}, {"sector_title": "GLASS", "sector_rate": "31"}]
可选优化:忽略大小写匹配
如果需要匹配时不区分大小写(比如参数传入"woolen"也能匹配到"WOOLEN"),可以调整判断逻辑:
const filteredArr = arr.filter(item => targetSectors.some(sector => sector.toLowerCase() === item.sector_title.toLowerCase()) );
这样不管参数和数组中的值是大写还是小写,都能正确匹配啦!
内容的提问来源于stack exchange,提问作者Muhammad Adeel Irshad
相关产品推荐
相关产品推荐

