首页 > 解决方案 > 字符串比较不适用于过滤方法

问题描述

我正在尝试替换和比较rest api JSON数组返回的字符串,但不知何故它现在正在工作。任何人都可以帮忙吗?

下面的方法返回结果而不过滤:

review1data.filter(element => element.PM?element.PM.toString().replace(/\s\[.*?\]/,''):element.PM === "Name, Test")

标签: javascriptarraysregexstring

解决方案


你有一个运算符优先级问题,优先级===高于,?:所以你的表达式被评估为

 element.PM?element.PM.toString().replace(/\s\[.*?\]/,''):(element.PM === "Name, Test")

这对于非空element.PM总是正确的。使用括号来明确定义您的优先级:

(element.PM?element.PM.toString().replace(/\s\[.*?\]/,''):element.PM) === "Test, Name"

const review1data = [ { Title:"Employee", PM: "Snehal, R [IT/PFS]" }, 
                      { Title:"Employee", PM: "John, T [IT/YTS]" } ];

console.log(review1data.filter(element => 
   (element.PM ? element.PM.toString().replace(/\s\[.*?\]/,'') : element.PM) === "Snehal, R"));


推荐阅读