如果有多个消息且元素“settlementDesc”不包含未覆盖或无效数量,则尝试编写逻辑,反之亦然。我应该能够使用 notCovered/invalidQuantity 字符串删除重复项并保留。
数据
All these scenarios should be if messages are more then 1 in length
Scenario#1
const messages = [
{
"settlementCode": "58",
"settlementDesc": "Not Covered Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card."
},
{
"settlementCode": "58",
"settlementDesc": "Not Covered Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card."
},
{
"settlementCode": "359",
"settlementDesc": "Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card."
}
];
Scenario#2
const messages = [
{
"settlementCode": "58",
"settlementDesc": "Not Covered Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card."
},
{
"settlementCode": "58",
"settlementDesc": "Not Covered Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card."
}
];
main.js
const validateEntries = (messages) => {
let filteredMsg;
if (!messages) {
return [];
}
if(messages.length > 1) {
console.log("Multiple messages");
const response = [];
let bRet = false;
const mulitpleMessages = messages.reduce((acc,curr) => {
if (/not covered|invalid quantity/i.test(curr.settlementDesc !== true) {
bRet = true;
}
if(bRet) {
if( acc.settlementCode == curr.settlementCode) {
return acc;
}
}
return curr;
});
filteredMsg = mulitpleMessages;
} else {
filteredMsg = messages.filter((item) => {
if (/not covered|invalid quantity/i.test(item.settlementDesc)) {
return true;
} else {
return item.settlementDesc.includes(':');
}
});
}
return filteredMsg;
};
console.log(validateEntries(messages));
预期输出
Scneario#1 ouput
[
{
"settlementCode": "359",
"settlementDesc": "Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card."
}
];
Scenario#2
[
{
"settlementCode": "58",
"settlementDesc": "Not Covered Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card."
}]
错误
let bRet = false;
38 | const mulitpleMessages = messages.reduce((acc,curr) => {
> 39 | if (/not covered|invalid quantity/i.test(curr.settlementDesc !== true) {
|
41 | bRet = true;
42 | }
最佳答案
您可以使用嵌套的filter()
const messages = [ { "settlementCode": "58", "settlementDesc": "Not Covered Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card." }, { "settlementCode": "58", "settlementDesc": "Not Covered Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card." }, { "settlementCode": "359", "settlementDesc": "Needs prior authorization: System could not process your request. Call us at the toll-free number on your benefit ID card." } ];
const res = messages.filter(x =>
messages.filter(a => a.settlementCode === x.settlementCode).length === 1
);
console.log(res)
关于javascript - 如何根据条件从数组中删除重复元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56565363/