gpt4 book ai didi

javascript - 使用 lodash 根据两个不同数组的数据过滤数组

转载 作者:行者123 更新时间:2023-12-02 23:27:57 24 4
gpt4 key购买 nike

我需要根据两个不同数组的数据来过滤数组。下面是示例和预期结果。

let groupedProtocolFilterValues = [
["Risk score < 4"]
];
let groupedPatientFilterValues = [
["CARDIOLOGY B2 INTERN2 ADMIT PRIMARY TEAM", "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM"]
];

let events = [{
"_id": "5d087b842c3f77e7a0c674e5",
"alert": {
"title": "Risk score < 3",
"patientLocation": "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}, {
"_id": "5d087b842c3f77e7a0c674e6",
"alert": {
"title": "Risk score < 4",
"patientLocation": "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}, {
"_id": "5d087b842c3f77e7a0c674e7",
"alert": {
"title": "Risk score < 4",
"patientLocation": "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}, {
"_id": "5d087b842c3f77e7a0c674e8",
"alert": {
"title": "Risk score < 4",
"patientLocation": "CARDIOLOGY B1 INTERN1 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}];

在这里,我想根据“groupedProtocolFilterValues”和“groupedPatientFilterValues”的数据过滤“事件”数组。所以看目前的数据预期结果应该是

events = [{
"_id": "5d087b842c3f77e7a0c674e6",
"alert": {
"title": "Risk score < 4",
"patientLocation": "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}, {
"_id": "5d087b842c3f77e7a0c674e7",
"alert": {
"title": "Risk score < 4",
"patientLocation": "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}];

我想检查任何“事件”数组元素是否包含“风险评分 < 4”和“CARDIOLOGY B2 INTERN2 ADMIT PRIMARY TEAM”或“CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM”。

简而言之,我需要应用以下过滤条件:

“groupedPatientFilterValues/groupedProtocolFilterValues”之间的“与”

在“groupedPatientFilterValues”和“groupedProtocolFilterValue”内进行或运算

最佳答案

不需要使用 lodash 来完成此任务,.filter 将完成这项工作:

let groupedProtocolFilterValues = [
["Risk score < 4"]
];
let groupedPatientFilterValues = [
["CARDIOLOGY B2 INTERN2 ADMIT PRIMARY TEAM", "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM"]
];

let flattenedProtocols = groupedProtocolFilterValues.reduce((res, cur) => res = res.concat(cur), []);
let flattenedLocations = groupedPatientFilterValues.reduce((res, cur) => res = res.concat(cur), []);

let events = [{
"_id": "5d087b842c3f77e7a0c674e5",
"alert": {
"title": "Risk score < 3",
"patientLocation": "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}, {
"_id": "5d087b842c3f77e7a0c674e6",
"alert": {
"title": "Risk score < 4",
"patientLocation": "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}, {
"_id": "5d087b842c3f77e7a0c674e7",
"alert": {
"title": "Risk score < 4",
"patientLocation": "CARDIOLOGY CHF INTERN2 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}, {
"_id": "5d087b842c3f77e7a0c674e8",
"alert": {
"title": "Risk score < 4",
"patientLocation": "CARDIOLOGY B1 INTERN1 ADMIT PRIMARY TEAM\r\r\nCARDIOMYOPATHY CONSULT"
},
"createdAt": "2019-06-18T05:49:56.402Z"
}];

const result = events.filter(x => {
return (!flattenedProtocols.length || flattenedProtocols.indexOf(x.alert.title) >= 0) &&
(!flattenedLocations.length || flattenedLocations.some(c => x.alert.patientLocation.includes(c)));
});
console.log(result);

关于javascript - 使用 lodash 根据两个不同数组的数据过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56649820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com