簡體   English   中英

如何在JS中刪除屬性並映射新對象?

[英]How to delete property in JS and map new object?

想要刪除具有匹配errorCode的屬性並在完成所有篩選后轉換新對象,我不會低於預期的響應率嗎?下面的代碼是什么問題?

如果解決方案代碼與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": {}
        }
    ]

將您的findErrCode更新為以下內容:

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

關鍵是使用Number轉換您的settlementCode以便Array.some工作。 也請使用Array.some因為您只關心結果是true還是false(布爾值)。 Array.filter實際上會返回記錄等。

你可以看到它在這里工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM