[英]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.