Как проверить, содержат ли элементы массива строку? - PullRequest
0 голосов
/ 06 июня 2019

Пытаясь опустить элемент, содержащий строку, он по-прежнему возвращает mailPrice, которая содержит Not Covered строку. Есть какие-нибудь идеи по поводу исправления?

data

const drug = {
  "isBrand": false,
  "drugName": "Atorvastatin Calcium",
  "drugStrength": "80mg",
  "drugForm": "Tablet",
  "mailPrice": {
    "totalQuantity": 90,
    "rejectMessage": [{
      "settlementCode": "99",
      "settlementDesc": "Not Covered Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
    }]
  },
  "retailPrice": {
    "totalQuantity": 30,
    "rejectMessage": [{
      "settlementCode": "99",
      "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
    }]
  },
  "specialtyPrice": {}
};

main.js

const priceFilterHandler = (item) => {
  const retailHasCode = findErrCode(item.retailPrice && item.retailPrice.rejectMessage);
  const mailHasCode = findErrCode(item.mailPrice && item.mailPrice.rejectMessage);
  if (retailHasCode) {
    delete item.retailPrice;
  }

  if (mailHasCode) {
    delete item.mailPrice;
  }

  return item;
}


const findErrCode = (data) => data && data.some((item) =>

  item.settlementDesc.includes(!'Not Covered')
);

console.log(priceFilterHandler(drug));

ожидаемый вывод

mailPrice опущен в ответе ниже, потому что его rejectMessage содержит строку Not Covered

{
      "isBrand": false,
      "drugName": "Atorvastatin Calcium",
      "drugStrength": "80mg",
      "drugForm": "Tablet",
      "retailPrice": {
        "totalQuantity": 30,
        "rejectMessage": [{
          "settlementCode": "99",
          "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
        }]
      },
      "specialtyPrice": {}
    };

1 Ответ

1 голос
/ 06 июня 2019

Вы ищете это: https://jsfiddle.net/5cnqwfgu/1/

Object.entries(drug).forEach(entry => {
if(typeof entry[1] === "object") {
            if(entry[1]['rejectMessage'] && entry[1]['rejectMessage'].length > 0 && entry[1]['rejectMessage'][0]['settlementDesc'].includes('Not Covered')){
                delete drug[entry[0]];
        }
    }
});

console.log(drug);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...