两层if嵌套该怎么优化


pushData(flag) {
      const { $refs } = this;
      if (flag === REMAINING_SHAREHOLDERS) {
        if ($refs[flag].getData().length <= DYNAMIC_NUM) {
          $refs[flag].pushData({});
        }
      } else {
        $refs[flag].pushData({});
      }
    },

请问以上代码该怎么优化,主要针对内部的两层if嵌套

可以考虑使用更简洁的逻辑条件表达式(ternary operator)代替嵌套的if语句。

例如,可以将原来的代码改写成:

pushData(flag) {
  const { $refs } = this;
  const dataLength = $refs[flag].getData().length;
  if (flag === REMAINING_SHAREHOLDERS && dataLength <= DYNAMIC_NUM) {
    $refs[flag].pushData({});
  } else if (flag !== REMAINING_SHAREHOLDERS) {
    $refs[flag].pushData({});
  }
}

这样可以将嵌套的if语句简化为两个逻辑条件表达式,使代码更加简洁易懂。

看看“卫语句”的概念。变成这样:

 if (flag !== REMAINING_SHAREHOLDERS) {
        $refs[flag].pushData({});
        return;
      }
if ($refs[flag].getData().length <= DYNAMIC_NUM) {
          $refs[flag].pushData({});
        }
```typescript

该回答引用ChatGPT
可以使用三目运算符替换内部的两层 if 嵌套,将逻辑简化,如下所示:

pushData(flag) {
  const { $refs } = this;
  $refs[flag].pushData((flag === REMAINING_SHAREHOLDERS && $refs[flag].getData().length > DYNAMIC_NUM) ? {} : {});
},

这样代码可读性更高,而且不需要嵌套 if 语句,减少了代码的嵌套层数,同时也能实现相同的逻辑。

放到一个if 里


 pushData(flag) {
      const { $refs } = this;
      if (flag === REMAINING_SHAREHOLDERS&&
      $refs[flag]&&
      $refs[flag].getData()&&
      $refs[flag].getData().length <= DYNAMIC_NUM) {
            $refs[flag].pushData({});
      } else {
         $refs[flag].pushData({});
      }
   }
pushData(flag) {
      const { $refs } = this;
      if ((flag === REMAINING_SHAREHOLDERS &&
        $refs[flag].getData().length <= DYNAMIC_NUM) ||
        flag !== REMAINING_SHAREHOLDERS) {
        $refs[flag].pushData({})
      }
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:简单的if嵌套

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^