【发布时间】:2019-06-02 16:31:07
【问题描述】:
所以下面注释掉的代码在 lodash 中工作只是想转换成 es6 以使其更简单和更清晰的代码它的抛出错误有些是未定义的。这里有什么帮助吗?
main.js
const rejectMessagerrors = [45,67,87];
const drug = [{
"isBrand": true,
"drugName": "Lipitor",
"specialtyPrice": {}
},
{
"isBrand": false,
"drugName": "Atorvastatin Calcium",
"drugStrength": "80mg",
"drugForm": "Tablet",
"mailPrice": {
"totalQuantity": 90,
"rejectMessage": [{
"settlementCode": "45",
"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": {}
}
];
function priceFilterHandler(drug) {
// const pricePath = ['mailPrice.rejectMessage', 'retailPrice.rejectMessage'];
//
// _.forEach(pricePath, function (path) {
// const rejectMsg = _.get(drug, path);
// const hasCode = rejectMsg && rejectMsg.find(i => !!~rejectMessagerrors.indexOf(+i.settlementCode));
// hasCode && delete drug[path.split('.').shift()];
// });
const retailHasCode = findErrCode(item.retailPrice.rejectMessage);
const mailHasCode = findErrCode(item.mailPrice.rejectMessage);
if (retailHasCode) {
delete item.retailPrice;
}
if (mailHasCode) {
delete item.mailPrice;
}
return item;
}
const filteredPrices = _.map(drug, priceFilterHandler);
findErr 方法
let findErrCode = data => {
data.some(i => rejectMessagerrors.includes(+i.settlementCode));
}
预期输出
因为mailPrice 中包含结算代码45,所以价格应该被省略它匹配rejectMessagerrors 列表元素
[{
"isBrand": true,
"drugName": "Lipitor",
"specialtyPrice": {}
},
{
"isBrand": false,
"drugName": "Atorvastatin Calcium",
"drugStrength": "80mg",
"drugForm": "Tablet",
"retailPrice": {
"totalQuantity": 30,
"rejectMessage": [{
"settlementCode": "99",
"settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
}]
},
"specialtyPrice": {}
}
];
【问题讨论】:
-
你没有从
findError函数返回任何东西 -
@CodeManiac 没有解决问题它仍然说一些未定义
-
你能发布想要的输出吗?将尝试作为一个工作的 sn-p 发布以涵盖所有问题
-
请注意,您说的是在 es*5* 中添加的东西,而不是 es6...
-
@CodeManiac 我添加了预期的输出
标签: javascript arrays ecmascript-6 lodash