如何根据指定prod_delivery参数过滤对象数组
问题原因
你代码中的核心错误是变量取值逻辑错误:
- 你通过
req.param('prod_delivery')拿到的prod_delivery本身就是值为"Express"的字符串,不是对象结构 - 筛选条件里写的
prod_delivery.prod_delivery属于从字符串上读取不存在的属性,返回值为undefined,自然匹配不到任何数组项,所以返回空数组。
另外你示例提供的数组存在语法错误:每个prod对象的最后一个属性后错误用了分号;,实际接口返回的合法JSON需要把此处换成逗号,,否则数组解析失败也会导致后续逻辑异常。
修复方案
直接用prod_delivery变量本身做匹配即可,同时建议加全等判断、可选链兼容边界异常:
let prod_delivery = req.param('prod_delivery'); console.log(prod_delivery) // 输出为 Express GlobalServices.isDisabledAddToCart(filteredProductList, filters) .then(function(updatedProductList) { var output = updatedProductList.filter(function(x) { // 修正匹配条件,可选链避免属性不存在时报错 return x?.prod_merchant?.prod_delivery === prod_delivery }); console.log("output", output) })
内容的提问来源于stack exchange,提问作者Neha Kumari
相关产品推荐
相关产品推荐

