如何在JS中检查null并基于此实现逻辑?



我有parseNotAvailable基于版本的函数有一些逻辑,所以我有penalties版本2,但我需要有与版本1相同的逻辑,所以我试图传递为null得到0,但它不起作用并抛出错误。

有什么更好的方法来实现上述任务吗?

主.js

let newPrice = {
copayEmployer: parseNotAvailable('N/A', 1),
penalties: parseNotAvailable('N/A', null),
secondaryClaimNumber: parseNotAvailable('N/A',2)
};
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 {
return parseFloat(value);
}
};

// console.log(parseNotAvailable('N/A', 1));
console.log(newPrice);

预期成果

{ copayEmployer: 0, penalties: 0, secondaryClaimNumber: null }

用上面的代码返回

{ copayEmployer: 0, penalties: NaN, secondaryClaimNumber: 0 }

parseNotAvailable('N/A', null)版本中是null的,并且不传递if语句 na 转到 else 语句return parseFloat(value);

parseNotAvailable('N/A', 2)版本中2,如果语句... ||(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))

您的代码正在流向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);
}
};

相关内容

  • 没有找到相关文章

最新更新