我使用过滤器尝试了数组的过滤器对象,但无法获取。我已经使用对象作为过滤器字段。我正在使用给定数组的过滤器。在每个过滤器对象中,我应用了过滤器字段,但无法获得过滤器结果。下面是我的代码
var data = [{
"schemaName": "test",
"schemaType": "stype1",
"functionalDomain": "domain1",
"archiveFlag": "no"
}, {
"schemaName": "test2",
"schemaType": "stype2",
"functionalDomain": "domain2",
"archiveFlag": null,
}, {
"schemaName": "test2",
"schemaType": null,
"functionalDomain": "domain2",
"archiveFlag": null,
}, {
"schemaName": "test2",
"schemaType": "stype2",
"functionalDomain": null,
"archiveFlag": "no"
},
{
"schemaName": "test2",
"schemaType": "stype1",
"functionalDomain": "domain3",
"archiveFlag": "no"
},
{
"schemaName": "test1",
"schemaType": "stype1",
"functionalDomain": "domain3",
"archiveFlag": "no"
},
{
"schemaName": "test1",
"schemaType": "stype1",
"functionalDomain": "domain3",
"archiveFlag": null
}
];
var filterdata = {
functionalDomain: ["domain1", "domain2", "domain3"],
archiveFlag: "no",
schemaType: ["stype1"]
};
var originalRes = data.filter((ele, indix) => {
for (const prop in filterdata) {
var fields = Array.isArray(filterdata[prop]) ? filterdata[prop] : [filterdata[prop]];
if (ele[prop] === undefined || ele[prop] != filterdata[prop])
return false;
if (fields.includes(ele[prop]) === false) {
return false;
}
}
return true;
})
console.log(JSON.stringify(originalRes));
我需要基于多个字段进行过滤,但无法获取空数组。以下是预期的输出:
[{“ schemaName”:“测试”,“ schemaType”:“ stype1”,“ functionalDomain”:“ domain1”,“ archiveFlag”:“否”},{“ schemaName”:“ test2”,“ schemaType”:“ stype1”,“ functionalDomain”:“ domain3”,“ archiveFlag”:“否”},{“ schemaName”:“ test1”,“ schemaType”:“ stype1”,“ functionalDomain”:“ domain3”,“ archiveFlag”:“否”}]
看看是否可行。您可以采用更简洁的方法,对archiveFlag使用null而不是no。
const allowedDomains = ["domain1","domain2","domain3"];
const allowedSchemas = ["stype1"];
data.filter(el => (allowedDomains.includes(el.functionalDomain)) &&
(allowedSchemas.includes(el.schemaType)) &&
(!el.archiveFlag))