javascript - 如何根据条件从数组中删除重复元素?

标签 javascript arrays ecmascript-6

如果有多个消息且元素“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/

相关文章:

javascript - 选择嵌套数组对象并替换它

Javascript - 将数组解构为对象

javascript - 将类应用于具有属性的元素

javascript - JavaScript 中的 For 循环

javascript函数仅在ie中未定义

java - 在Java中将字符串数组转换为字符串

java - 写入数组

javascript - 如何使用 ES6 ... 表示法?

javascript - 无法使用自定义 ErrorHandler Angular 5 显示后端错误的 Material snackbar

javascript 程序,打印当前目录中具有请求的文件扩展名并包含特定字符串的所有文件