javascript - 使用包含()过滤对象数组不起作用
问题描述
我正在尝试使用contains
. 但不起作用。任何人都在这里解决了这个问题。
const nestedFilter = (targetArray, filters) => {
var filterKeys = Object.keys(filters);
return targetArray.filter(function(eachObj) {
return filterKeys.some(function(eachKey) {
return eachObj[eachKey].includes(filters[eachKey]);
});
});
};
let filter1 = {Id: "24", Name: "Api Gateway"};
let products = [
{
"Id": 100024,
"Name": "Api Gateway UpdateXX",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "B, Mohamedarif (Cognizant)",
"CreatedDate": "2019-21-17T06:35:20.107Z"
},
{
"Id": 100026,
"Name": "Chennai became cold very soon!!",
"Description": "stridfgdfgng",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100031,
"Name": "Soma Banerjee",
"Description": "Updated for Testing2",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100032,
"Name": "Soma Banerjee",
"Description": "Soma Banerjee",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100033,
"Name": "Update Same Data Contact",
"Description": "Update Same Data Contact",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100034,
"Name": "New",
"Description": "New Des",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100039,
"Name": "100001 New111",
"Description": "100001 New",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100041,
"Name": "3 way entry",
"Description": "3 way entry",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100042,
"Name": "3 way entry1",
"Description": "3 way entry",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100043,
"Name": "ghgjhlk",
"Description": "sdfsfs",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100044,
"Name": "ghgjhlk",
"Description": "sdfsfs",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100045,
"Name": "Azure New",
"Description": "Azure New",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100047,
"Name": "2 way",
"Description": "2 way",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100049,
"Name": "C2-new",
"Description": "C2-new",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100050,
"Name": "C0001-new",
"Description": "C00012-new",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100051,
"Name": "Common Add",
"Description": "Common Add",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100053,
"Name": "Mama",
"Description": "Mama",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100054,
"Name": "New title",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100055,
"Name": "CTS",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100056,
"Name": "New course added",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100057,
"Name": "Chennai 2020",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100058,
"Name": "updated Course",
"Description": "Updated Course",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100059,
"Name": "New Coursegfdgdfg",
"Description": "New Course",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100061,
"Name": "New Cosmos",
"Description": "Cosmos",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100062,
"Name": "New Cosmos2222",
"Description": "Cosmos222",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100063,
"Name": "New Cosmosooooo",
"Description": "Cosmoooooo",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100064,
"Name": "New Cosmo123",
"Description": "Cosmo123",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100066,
"Name": "New dfsfsfsd",
"Description": "Cosmosdfsfsfds123",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100068,
"Name": "Using good",
"Description": "strisdfsfsdfng",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100077,
"Name": "Nadu Nadu",
"Description": "NaduNadu",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100078,
"Name": "Course 0013 for Albanian literature",
"Description": "Course 0012 for Albanian literature",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100079,
"Name": "Course 0002 for Albanian literature",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100080,
"Name": "Course 0003 for Albanian literature",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100081,
"Name": "a-z",
"Description": "a-z",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100082,
"Name": "Course 0004 dipa",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100083,
"Name": "Update",
"Description": "Up",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100084,
"Name": "fsdfsfsfs",
"Description": "ssdfsdfsftrisdfsdfng",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100086,
"Name": "fsdfsfsfs",
"Description": "ssdfsdfsftrisdfsdfng",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100087,
"Name": "dsdsdfsfsdfs",
"Description": "strdfsdfsdfsfsding",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100088,
"Name": "dsdsdfsfsdfs",
"Description": "strdfsdfsdfsfsding",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100089,
"Name": "dsdsdfsfsdfs",
"Description": "strdfsdfsdfsfsding",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100090,
"Name": "dsdsdfsfsdfs",
"Description": "strdfsdfsdfsfsding",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100091,
"Name": "100001",
"Description": "st100001ring",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100092,
"Name": "100001",
"Description": "st100001ring",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100093,
"Name": "fdgdfdgdgdfgdf",
"Description": "st1000dsfgddfgdg01ring",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100095,
"Name": "testservice",
"Description": "LogicAppVS",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
},
{
"Id": 100096,
"Name": "TestingLogicApp",
"Description": "VisualSTudio",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
}
]
console.log(nestedFilter(products, filter1));//getting error.
看结果:
{
"Id": 100024,
"Name": "Api Gateway UpdateXX",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "B, Mohamedarif (Cognizant)",
"CreatedDate": "2019-21-17T06:35:20.107Z"
}
提前致谢。
解决方案
您在控制台中收到以下错误:
eachObj[eachKey].includes 不是函数
出现此错误是因为每个对象中的一个值是Number
数组中的类型。代码中使用的方法 ieString.prototype.includes()
可用于String
type 并且不适用于 typeNumber
并会抛出上述错误。
要解决此问题,您需要在使用之前使用可用的方法将类型的值转换Number
为字符串:.toString()
Number.ptototype
.includes()
let filter = {Id: "24", Name: "Api Gateway"};
let data = [{
"Id": 100024,
"Name": "Api Gateway UpdateXX",
"Description": "Course 0002 for Albanian literature",
"CreatedBy": "B, Mohamedarif (Cognizant)",
"CreatedDate": "2019-21-17T06:35:20.107Z"
}, {
"Id": 100026,
"Name": "Chennai became cold very soon!!",
"Description": "stridfgdfgng",
"CreatedBy": "Script",
"CreatedDate": "2019-04-17T06:35:20.107Z"
}];
let resultBy = (targetArr, filterObj) => {
let keys = Object.keys(filterObj);
return targetArr.filter(
o => keys.every(key => o[key].toString().includes(filterObj[key]))
);
};
console.log(resultBy(data, filter));
推荐阅读
- ios - SwiftUI + Combine - Publisher 在第一个错误时终止
- git - 如何在显示所有其他提交的同时在另一个提交中查看整个项目
- docker - 在 Jenkins 声明性管道中将 repo 根添加为 Docker 卷
- python-3.x - pandas:按索引选择行的布尔值(DatetimeIndex)
- python - 使用 HttpSensor 触发 Airflow DAG
- c++ - 编译 C++ 库时如何开始调试“目标‘所有’的配方失败”
- python - 尴尬的数组间隔添加属性
- python - 直接调用函数来更新 matplotlib 图形有效,从循环中重复调用它只显示最终结果
- c++ - 试图并行化我的代码但是当我运行它时,它永远不会给出正确的输出
- javascript - 为什么子元素属性会传入父元素的 onClick 事件(React)?