JavaScript中使用.find方法设置双重条件未生效,求问题排查
JavaScript Array.find 双重条件查询失效问题解决
你的代码问题出在传递给find的参数逻辑错误:
原代码里把两个独立的箭头函数用||连接,这会导致逻辑或直接返回第一个箭头函数(因为函数本身是真值),find只会用第一个函数去校验元素,第二个条件根本不会生效。这就是为什么discount@shipping这类不符合预期的元素会被错误返回。
正确写法
在同一个箭头函数内部,用逻辑或同时判断两个条件:
let calculoDesconto = item.PriceTags.find(n => n.Name === "DISCOUNT@MARKETPLACE" || n.Name === "discount@price");
可选:大小写不敏感匹配
如果需要忽略Name的大小写差异,可统一转换为小写后判断:
let calculoDesconto = item.PriceTags.find(n => { const lowerCaseName = n.Name.toLowerCase(); return lowerCaseName === "discount@marketplace" || lowerCaseName === "discount@price"; });
这样find会逐个检查每个元素的Name是否符合两个目标值之一,不符合条件的元素会被正确过滤,不会赋值给calculoDesconto。
内容的提问来源于stack exchange,提问作者kalinare
相关产品推荐
相关产品推荐

