Насколько я понимаю, вы хотите фильтровать те объекты, которые соответствуют следующим критериям
SettlementCode
не должно существовать в drugPriceErrors
массиве ИЛИ SettlementDesc
должен содержать :
Вы можете исправить свой код следующим образом
- Во-первых, поскольку
drugPriceErrors
является массивом чисел, преобразуйте settlementCode
для нумерации с использованием +settlementCode
- Если условие оценено как истинное, то есть
settlementCode
существует в drugPriceErrors
, вернуть true - В противном случае вернуть, если
settlementDesc
содержит :
const drugPriceErrors = [99,85];
const messages = [ {settlementCode:"99", settlementDesc: "test:test" }, {settlementCode:"66", settlementDesc: "test:test" },{settlementCode: "77",settlementDesc: "test"}];
function validateEntries(messages) {
if (!messages) {
return []
};
let filteredMsg = messages.filter((item) => {
if (drugPriceErrors.includes(+item.settlementCode)) return true;
else return item.settlementDesc.includes(":");
});
return filteredMsg;
};
console.log(validateEntries(messages));
Кроме того, вы также можете упростить свой код следующим образом
const drugPriceErrors = [99,85];
const messages = [ {settlementCode:"99", settlementDesc: "test:test" }, {settlementCode:"66", settlementDesc: "test:test" },{settlementCode: "77",settlementDesc: "test"}];
const result = messages.filter(v => drugPriceErrors.includes(+v.settlementCode) || v.settlementDesc.includes(":"));
console.log(result);