【问题标题】:How to check null and implement logic based on that in JS?如何在JS中检查null并基于它实现逻辑?
【发布时间】:2019-07-24 15:58:44
【问题描述】:

我有基于版本的parseNotAvailable 函数有一些逻辑,所以我有penalties 作为版本 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 }

【问题讨论】:

    标签: javascript angular ecmascript-6 null


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-14
        • 2016-02-14
        • 2021-12-12
        • 2018-10-14
        • 2021-05-15
        • 1970-01-01
        • 2012-12-03
        • 1970-01-01
        相关资源
        最近更新 更多