为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕沐林林 2021-08-20 17:37:26
我有parseNotAvailable基于版本的函数有一些逻辑,所以我有penalties它作为版本 2 但我需要有与版本 1 相同的逻辑,所以我试图传递为 null 以获得 0 但它不工作并抛出错误。有没有更好的方法来实现上述任务?主文件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 }
查看完整描述

2 回答

?
Smart猫小萌

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))


查看完整回答
反对 回复 2021-08-20
?
潇潇雨雨

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);

  }

};


查看完整回答
反对 回复 2021-08-20
  • 2 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号