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

Javascript 如何在JS中检查null并基于此实现逻辑?,javascript,angular,ecmascript-6,null,Javascript,Angular,Ecmascript 6,Null,我有基于版本的parseNotAvailable函数有一些逻辑,所以我有作为版本2的惩罚,但我需要有与版本1相同的逻辑,所以我尝试传递为null以获得0,但它不工作并抛出错误 有没有更好的方法来完成上述任务 main.js let newPrice = { copayEmployer: parseNotAvailable('N/A', 1), penalties: parseNotAvailable('N/A', null), seco

我有基于版本的
parseNotAvailable
函数有一些逻辑,所以我有作为版本2的
惩罚
,但我需要有与版本1相同的逻辑,所以我尝试传递为null以获得0,但它不工作并抛出错误

有没有更好的方法来完成上述任务

main.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
,如果
语句na转到else语句
返回parseFloat(值),则不会传递

parseNotAvailable('N/A',2)
中,版本是
2
,如果语句
||(value | | value==1)
返回0


如果((value==“N/A”| value==“N/A”)和((version | version==“1))
应该是
如果((value==“N/A”| value==“N/A”)和(!version | version==“1))
您的代码正在流向
else
块并尝试
parseInt(
N/A”),这显然是
NaN
。你可能想重新考虑一下你在那里的情况。我在代码中添加了一个简单的
isNaN
检查,您可以看到:

试试看{
让newPrice={
公司雇员:不可用('N/A',1),
惩罚:parseNotAvailable('N/A',null),
第二个索赔编号:parseNotAvailable('N/A',2)
};
console.log(newPrice);
}捕捉(错误){
控制台错误(err)
}
函数parseNotAvailable(值、版本){
如果((值=='N/A'| |值=='N/A')&&(版本| |版本===1)){
返回0;
}else if((值=='N/A'| |值=='N/A')&&version==2){
返回null;
}否则{
//在此处检查NaN值-如果您设定了流量控制条件,则可能不需要该值
如果(isNaN(值)){
抛出`${value}为NaN`;
}
返回浮点(值);
}
};