Вы передаете строку в качестве аргумента фильтра функции.Тогда Object.keys(filters)
вернет массив индексов символов в этой строке ["0", "1", "2", "3", "4", "5", "6",...]
, что явно не то, что вы хотите.
Попробуйте это:
const array = [ { "ProgrammeId": 1, "Programme": { "ProgrammeId": 1, "ProgrammeName": "DP Programme", "ShortCode": "DP01", "StartDate": "2019-07-22T09:55:51.947Z", "EndDate": "2021-07-22T09:55:51.947Z" }, "List": [ { "ProgrammeId": 1, "QualificationId": 102, "RegistrationCategoryId": 202, "Qualification": { "QualificationId": 102, "QualificationName": "Diploma Y", "QualificaionActiveStatus": "Active" }, "RegistrationCategory": [ ], "viewMore": false }, { "ProgrammeId": 1, "QualificationId": 103, "RegistrationCategoryId": 203, "Qualification": { "QualificationId": 103, "QualificationName": "Qualification X", "QualificaionActiveStatus": "Active" }, "RegistrationCategory": [ { "RegistrationCategoryId": 203, "RegCategoryName": "Course" } ], "viewMore": false }, { "ProgrammeId": 1, "QualificationId": 101, "RegistrationCategoryId": 201, "Qualification": { "QualificationId": 101, "QualificationName": "Advanced Bilingual Diploma", "QualificaionActiveStatus": "Inactive" }, "RegistrationCategory": [ { "RegistrationCategoryId": 201, "RegCategoryName": "Anticipated" }, { "RegistrationCategoryId": 202, "RegCategoryName": "Diploma" }, { "RegistrationCategoryId": 203, "RegCategoryName": "Retake" }, { "RegistrationCategoryId": 203, "RegCategoryName": "CP" }, { "RegistrationCategoryId": 203, "RegCategoryName": "RC A" }, { "RegistrationCategoryId": 204, "RegCategoryName": "RC B" }, { "RegistrationCategoryId": 204, "RegCategoryName": "RC C" }, { "RegistrationCategoryId": 204, "RegCategoryName": "RC D" }, { "RegistrationCategoryId": 204, "RegCategoryName": "RC E" } ], "viewMore": false }, { "ProgrammeId": 1, "QualificationId": 103, "RegistrationCategoryId": 203, "Qualification": { "QualificationId": 103, "QualificationName": "Diploma", "QualificaionActiveStatus": "Inactive" }, "RegistrationCategory": [ { "RegistrationCategoryId": 203, "RegCategoryName": "Anticipated" } ], "viewMore": false } ] }, { "ProgrammeId": 2, "Programme": { "ProgrammeId": 2, "ProgrammeName": "CP Programme", "ShortCode": "CP02", "StartDate": "2013-07-22T09:55:51.947Z", "EndDate": "2024-07-22T09:55:51.947Z" }, "List": [ { "ProgrammeId": 2, "QualificationId": 104, "RegistrationCategoryId": 204, "Qualification": { "QualificationId": 104, "QualificationName": "Qualification A", "QualificaionActiveStatus": "Active" }, "RegistrationCategory": [ { "RegistrationCategoryId": 204, "RegCategoryName": "Certificate" } ], "viewMore": false }, { "ProgrammeId": 2, "QualificationId": 105, "RegistrationCategoryId": 205, "Qualification": { "QualificationId": 105, "QualificationName": "Qualification 2", "QualificaionActiveStatus": "Active" }, "RegistrationCategory": [ { "RegistrationCategoryId": 205, "RegCategoryName": "Anticipated" } ], "viewMore": false }, { "ProgrammeId": 2, "QualificationId": 104, "RegistrationCategoryId": 204, "Qualification": { "QualificationId": 104, "QualificationName": "Qualification 1", "QualificaionActiveStatus": "Inactive" }, "RegistrationCategory": [ { "RegistrationCategoryId": 204, "RegCategoryName": "Anticipated" } ], "viewMore": false } ] }, { "ProgrammeId": 3, "Programme": { "ProgrammeId": 3, "ProgrammeName": "MYP Programme", "ShortCode": "MYP03", "StartDate": "2019-07-22T09:55:51.947Z", "EndDate": "2028-07-22T09:55:51.947Z" }, "List": [ { "ProgrammeId": 3, "QualificationId": 101, "RegistrationCategoryId": 201, "Qualification": { "QualificationId": 101, "QualificationName": "Advanced Bilingual Diploma", "QualificaionActiveStatus": "Active" }, "RegistrationCategory": [ { "RegistrationCategoryId": 201, "RegCategoryName": "Anticipated" }, { "RegistrationCategoryId": 202, "RegCategoryName": "Diploma" }, { "RegistrationCategoryId": 203, "RegCategoryName": "Retake" }, { "RegistrationCategoryId": 203, "RegCategoryName": "CP" }, { "RegistrationCategoryId": 203, "RegCategoryName": "RC A" }, { "RegistrationCategoryId": 204, "RegCategoryName": "RC B" }, { "RegistrationCategoryId": 204, "RegCategoryName": "RC C" }, { "RegistrationCategoryId": 204, "RegCategoryName": "RC D" }, { "RegistrationCategoryId": 204, "RegCategoryName": "RC E" } ], "viewMore": false }, { "ProgrammeId": 3, "QualificationId": 105, "RegistrationCategoryId": 205, "Qualification": { "QualificationId": 105, "QualificationName": "Qualification 2", "QualificaionActiveStatus": "Inactive" }, "RegistrationCategory": [ { "RegistrationCategoryId": 205, "RegCategoryName": "Anticipated" } ], "viewMore": false } ] }, { "ProgrammeId": 4, "Programme": { "ProgrammeId": 4, "ProgrammeName": "ABC Programme", "ShortCode": "ABC04", "StartDate": "2014-07-22T09:55:51.947Z", "EndDate": "2026-07-22T09:55:51.947Z" }, "List": [ { "ProgrammeId": 4, "QualificationId": 105, "RegistrationCategoryId": 205, "Qualification": { "QualificationId": 105, "QualificationName": "Qualification X", "QualificaionActiveStatus": "Active" }, "RegistrationCategory": [ { "RegistrationCategoryId": 205, "RegCategoryName": "Diploma" } ], "viewMore": false }, { "ProgrammeId": 4, "QualificationId": 105, "RegistrationCategoryId": 205, "Qualification": { "QualificationId": 105, "QualificationName": "Qualification 2", "QualificaionActiveStatus": "Inactive" }, "RegistrationCategory": [ { "RegistrationCategoryId": 205, "RegCategoryName": "Anticipated" } ], "viewMore": false } ] } ];
function filterByProperty(property, searchValue) {
return array.filter(obj => obj.List.filter(item =>
item.RegistrationCategory.filter(value => value[property] === searchValue)));
}
console.log(filterByProperty("RegistrationCategoryName", "Diploma"));