2 回答
TA贡献1911条经验 获得超7个赞
在parseNotAvailable('N/A', null)版本是null和不通过if语句 na 转到 else 语句 return parseFloat(value);
在parseNotAvailable('N/A', 2)版本中2,它首先通过 if 语句... ||(value || value === 1)和 return 0;
你有错误的断言if ((value === 'N/A' || value === 'n/a') && (version || version === 1))它应该是if ((value === 'N/A' || value === 'n/a') && (!version || version === 1))
TA贡献1833条经验 获得超4个赞
您的代码正在流向else块并尝试parseInt('N/A'),这显然是NaN。您可能想重新考虑您在那里的条件。isNaN如您所见,我向您的代码添加了一个简单的检查:
try {
let newPrice = {
copayEmployer: parseNotAvailable('N/A', 1),
penalties: parseNotAvailable('N/A', null),
secondaryClaimNumber: parseNotAvailable('N/A', 2)
};
console.log(newPrice);
} catch (err) {
console.error(err)
}
function parseNotAvailable(value, version) {
if ((value === 'N/A' || value === 'n/a') && (version || version === 1)) {
return 0;
} else if ((value === 'N/A' || value === 'n/a') && version === 2) {
return null;
} else {
//Do a check here for NaN value - this probably isnt needed if you straigten out your flow control conditions
if (isNaN(value)) {
throw `${value} is NaN`;
}
return parseFloat(value);
}
};
添加回答
举报
