我有这样的一维物体数组:

var data = [
{
  "empId": 63758,
  "empCode": "000003A",
  "empName": "Robert",
},
{
  "empId": 63759,
  "empCode": "000003B",
  "empName": "Paul John",
},
{
  "empId": 63760,
  "empCode": "000003C",
  "empName": "Chris John",
},
];

我希望按照在sql查询中使用的方式过滤数据,例如"john%",我希望它也能够获得不区分大小写的文本.

var data = [=
{
  "empId": 63759,
  "empCode": "000003B",
  "empName": "Paul John",
},
{
  "empId": 63760,
  "empCode": "000003C",
  "empName": "Chris John",
},
];

我已经试过了,但结果是只接受全文参数,如"Chris John"

var filter = {
  "empName": "Chris John"
}
data = data.filter(function(item){
for(var key in filter){
    if(item[key] == undefined || item[key] != filter[key])
    return false
}
return true
});

请帮忙,谢谢

推荐答案

您可以编写另一个util方法来判断子字符串值,如下所示:

var data = [ { empId: 63758, empCode: "000003A", empName: "Robert", }, { empId: 63759, empCode: "000003B", empName: "Paul John", }, { empId: 63760, empCode: "000003C", empName: "Chris John", }, ];
var filter = {
  empName: "joh",
};

const checkLikeValue = (a, b) => {
  if(a === b) {
    return true
  } else if (typeof a === "string") {
    const substrings = a.split(" ");
    return substrings.some(str => b.toLowerCase().includes(str))
  }
  return false
}

data = data.filter(function (item) {
  for (var key in filter) {
    if (item[key] == undefined || !checkLikeValue(filter[key], item[key])) return false;
  }
  return true;
});

console.log(data);

Javascript相关问答推荐

按钮未放置在html dis位置

useNavigation更改URL,但不呈现或显示组件

扫描qr code后出错whatter—web.js

成功完成Reducers后不更新状态

当作为表达式调用时,如何解析方法decorator 的签名?

如何调用名称在字符串中的实例方法?

PDF工具包阿拉伯字体的反转数字

使用原型判断对象是否为类的实例

在运行时使用Next JS App Router在服务器组件中运行自定义函数

IF语句的计算结果与实际情况相反

覆盖加载器页面避免对页面上的元素进行操作

为什么在函数中添加粒子的速率大于删除粒子的速率?

在表单集中保存更改时删除';禁用';

判断函数参数的类型

如何在独立的Angular 应用程序中添加Lucide-Angel?

React数组查找不读取变量

找不到处于状态的联系人

使用JavaScript或PHP从div ID值创建锚标记和链接

在openstreemap/leaflet中,当鼠标在 map 上移动时,如何在小工具提示中实时显示坐标

按下键盘上的空格键后,单词就会变色.我想在最后一封信之后立即给它们涂上 colored颜色