Javascript 如何删除JS中的属性并映射新对象?
想要删除具有匹配错误代码的属性,并在完成所有筛选后转换新对象,我不会得到低于预期的响应。知道下面的代码有什么问题吗 如果settlementCode与drugPriceErrors匹配,findErrCode应返回true main.jsJavascript 如何删除JS中的属性并映射新对象?,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,想要删除具有匹配错误代码的属性,并在完成所有筛选后转换新对象,我不会得到低于预期的响应。知道下面的代码有什么问题吗 如果settlementCode与drugPriceErrors匹配,findErrCode应返回true main.js const data = [{ "isBrand": true, "drugName": "Lipitor", "mailPrice": { "totalQ
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
,因为您只关心结果是真是假(布尔值)<代码>数组。过滤器实际上会返回记录等
您可以看到它正在工作将您的findErrCode
更新为如下内容:
let findErrCode = data =>
data.some(i => drugPriceErrors.includes(Number(i.settlementCode)))
关键是使用Number
转换您的settlementCode
以使数组正常工作。还可以使用Array.some
,因为您只关心结果是真是假(布尔值)<代码>数组。过滤器实际上会返回记录等
您可以看到它正在工作当前输出是什么?当前输出返回所有包含错误代码的对象当前输出是什么?当前输出返回所有包含错误代码的对象谢谢!谢谢你说的有道理!