[英]How to write if statement in arrow function expression?
我在下面的代码中没有得到预期的结果,只是想知道它是否是使用表达式在箭头函数语法中添加条件的正确方法。
const drugPriceErrors = [99, 85]; Case#1 const messages = [{ settlementCode: "99", settlementDesc: "test:test" }] Case#2 const messages = [{ settlementCode: "77", settlementDesc: "test" } ]; Case#3 const messages = [{ settlementCode: "66", settlementDesc: "test:test" }] function validateEntries(messages) { if (!messages) { return [] }; let filteredMsg = messages.filter((item) => { if (!drugPriceErrors.includes(item.settlementCode)) { item.settlementDesc.includes(":") } else { return; } }); return filteredMsg; }; console.log(validateEntries(messages));
预期产量
Case#1 output should be
[{
settlementCode: "99",
settlementDesc: "test:test"
}]
Case#2 output should be
[]
Case#3 output
[{
settlementCode: "66",
settlementDesc: "test:test"
}]
据我了解,您希望过滤符合以下条件的对象
SettlementCode
不应该存在于drugPriceErrors
数组中, 或者 SettlementDesc
应该包含:
您可以按以下方式更正代码
drugPriceErrors
是一个数字数组,因此请使用+settlementCode
将该settlementCode
转换为数字 settlementCode
中存在drugPriceErrors
,返回true settlementDesc
包含:
const drugPriceErrors = [99,85]; const messages = [ {settlementCode:"99", settlementDesc: "test:test" }, {settlementCode:"66", settlementDesc: "test:test" },{settlementCode: "77",settlementDesc: "test"}]; function validateEntries(messages) { if (!messages) { return [] }; let filteredMsg = messages.filter((item) => { if (drugPriceErrors.includes(+item.settlementCode)) return true; else return item.settlementDesc.includes(":"); }); return filteredMsg; }; console.log(validateEntries(messages));
此外,您还可以按以下方式简化代码
const drugPriceErrors = [99,85]; const messages = [ {settlementCode:"99", settlementDesc: "test:test" }, {settlementCode:"66", settlementDesc: "test:test" },{settlementCode: "77",settlementDesc: "test"}]; const result = messages.filter(v => drugPriceErrors.includes(+v.settlementCode) || v.settlementDesc.includes(":")); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.