Как удалить свойство в JS и отобразить новый объект? - PullRequest
0 голосов
/ 28 мая 2019

хотел удалить свойства, имеющие соответствующий errorCode, и преобразовать новый объект, как только будет выполнена вся фильтрация. Я не получаю ниже ожидаемого ответа, не знаю, в чем проблема с кодом ниже?

, если урегулированиеCode совпадает с drugPriceErrors findErrCodeдолжен вернуть true.

main.js

const data = [{
            "isBrand": true,
            "drugName": "Lipitor",
            "mailPrice": {
                "totalQuantity": 90,
                "rejectMessage": [{
                    "settlementCode": "99",
                    "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
                }]
            },
            "retailPrice": {
                "totalQuantity": 30,
                "rejectMessage": [{
                    "settlementCode": "85",
                    "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
                }]
            },
            "specialtyPrice": {}
        },
        {
            "isBrand": false,
            "drugName": "Atorvastatin Calcium",
            "drugStrength": "80mg",
            "drugForm": "Tablet",
            "mailPrice": {
                "totalQuantity": 90,
                "rejectMessage": [{
                    "settlementCode": "99",
                    "settlementDesc": "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": {}
        }
    ];

const drugPricesErrors = [99,45,89];

function filterDrugs (data) { 
  const response = [];
const _drugPrice = data.map(item => {
        const retailHasCode = findErrCode(item.retailPrice.rejectMessage);
        const mailHasCode = findErrCode (item.mailPrice.rejectMessage);

        if(retailHasCode) {
            delete item.retailPrice;
        }

        if(mailHasCode) {
            delete item.mailPrice;
        }

  return item;

    });

    _.forEach(_drugPrice, function(drug) {
        if(drug.retailPrice !== undefined || drug.mailPrice !== undefined){
            response.push(drug);
        }
    });

  return response;
}

function findErrCode(data) {
    const filterMessage = data.filter( message => drugPriceErrors.includes(item.settlementCode));
    return filterMessage;
}

ожидаемый результат

[{
            "isBrand": true,
            "drugName": "Lipitor",
            "retailPrice": {
                "totalQuantity": 30,
                "rejectMessage": [{
                    "settlementCode": "85",
                    "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
                }]
            },
            "specialtyPrice": {}
        }
    ]

1 Ответ

2 голосов
/ 28 мая 2019

Обновите ваш findErrCode до следующего вида:

let findErrCode = data => 
  data.some(i => drugPriceErrors.includes(Number(i.settlementCode)))

Ключ должен использовать Number для преобразования вашего settlementCode, чтобы Array.some работал.Также используйте Array.some, так как вам важно только, чтобы результат был true или false (Boolean).Array.filter на самом деле вернет записи и т. Д.

Вы можете видеть, что это работает здесь

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