javascript - 字符串比较不适用于过滤方法
问题描述
我正在尝试替换和比较rest api JSON数组返回的字符串,但不知何故它现在正在工作。任何人都可以帮忙吗?
下面的方法返回结果而不过滤:
review1data.filter(element => element.PM?element.PM.toString().replace(/\s\[.*?\]/,''):element.PM === "Name, Test")
解决方案
你有一个运算符优先级问题,优先级===
高于,?:
所以你的表达式被评估为
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"));
推荐阅读
- php - 重力形式:动态创建一组字段
- laravel - 用户在 Flutter/Laravel API 中使用错误的凭据登录
- kubernetes - Kubernetes系统:发现角色机制
- php - PHP会话cookie不保存
- airflow - DAG的任务初始化需要时间
- c# - 更改 Unity 颜色渐变检查器字段
- ajax - 使用来自 ajax 的数据返回视图
- html - Blogger 动态视图(马赛克主题):如何在移动设备上获取全宽图像?
- go - 如何运行无限循环并在电报机器人中不断获取更新
- angular - Azure 和 NX,运行管道时出错:npm:另一个进程,id 为 4224,当前正在运行 ngcc