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({})
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: