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