【发布时间】:2019-05-29 14:01:59
【问题描述】:
我想重构代码使用过滤器而不是 lodash _forEach,下面的过滤器代码没有返回预期的响应。知道这里有什么错误吗?
main.js
const response = [];
const data = [{
"isBrand": true,
"drugName": "Lipitor",
"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": {}
}
];
_.forEach(data, function(drug) {
if (drug.retailPrice !== undefined || drug.mailPrice !== undefined) {
response.push(drug);
}
});
const filterItems = data.filter(item => item.retailPrice && item.mailPrice)
console.log(filterItems);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
预期结果
[{
"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": {}
}
];
【问题讨论】:
-
您已将
||更改为&&。此外,并非每个 falsy 值都是undefined -
这段代码运行良好
-
我看不出结果和想要的结果有什么区别。
-
对我来说很好用
标签: javascript arrays ecmascript-6