Javascript filering 在与数组字符串一起使用时不起作用



我正在尝试使用字符串数组过滤JavaScript数组(JSON数组(,并将其重新设置。

我正在使用此代码(从所有记录中删除了JSON.stringiFy,只是为了在控制台上显示记录(

var statusFilters = component.get("v.statusFilters");
console.log('statusFilters--->'+statusFilters);
var allRecords = component.get("v.empWrapperList");
console.log('allRecords--->'+allRecords);
var filteredRecords = allRecords.filter(rec => rec.Status__c == statusFilters);
console.log(filteredRecords);
component.set("v.empWrapperList",filteredRecords);`

这里statusFilter是一个字符串数组,allRecords是一个对象数组。

以下是来自控制台的日志。

状态过滤器--->付费 声明演示.js:119 全部记录--->

[
{
"Id": "a1V2x000001K29pEAC",
"Name": "CL-0000004",
"Member__c": "0032x000004bgAkAAI",
"Date_of_Service__c": "2020-06-25",
"Provider__c": "a112x000003VXGEAA4",
"Status__c": "Void"
},
{
"Id": "a1V2x000001K14OEAS",
"Name": "CL-0000003",
"Member__c": "0032x000004bgAkAAI",
"Billed__c": 22,
"Date_of_Service__c": "2015-09-15",
"Provider__c": "a112x000003VXGEAA4",
"Status__c": "Denied"
},
{
"Id": "a1V2x000001K14JEAS",
"Name": "CL-0000002",
"Member__c": "0032x000004bgAkAAI",
"Billed__c": 22,
"Date_of_Service__c": "2019-10-16",
"Provider__c": "a112x000003VXGEAA4",
"Status__c": "Rejected"
},
{
"Id": "a1V2x000001K14EEAS",
"Name": "CL-0000001",
"Member__c": "0032x000004bgAkAAI",
"Billed__c": 22,
"Date_of_Service__c": "2020-06-04",
"Provider__c": "a112x000003VXGEAA4",
"Status__c": "Paid"
}
]

实际上它无法执行这一行

var filteredRecords = allRecords.filter(rec => rec.Status__c == statusFilters);

你能帮忙吗?

你的第一个问题是stringifying.filter方法适用于数组。

第二个问题是你不能说rec.Status__c === statusFiltersstatusFilters是数组,Status__c是字符串。 映射到具有正确键名的对象数组,并在此数组中搜索rec.Status__cindexOf是一种在数组中查找的方法

如果状态过滤器只是数组,其中包含以下类型

["Void","Denied"]

然后

var filteredRecords = allRecords.filter(rec => statusFilters.indexOf(rec.Status__c)>-1);

如果状态过滤器是一个对象数组,如下所示

[ {"Status__c": "Void" }];

然后

var filteredRecords = allRecords.filter(rec => ( statusFilters.map(x=>x.Status__c)).indexOf(rec.Status__c)>-1);

相关内容

最新更新