警告函数“getPositionValue”的复杂度为 7。允许的最大值为 5

Warning Function 'getPositionValue' has a complexity of 7. Maximum allowed is 5

提问人:Jakub Najvárek 提问时间:10/6/2023 更新时间:10/18/2023 访问量:31

问:

我试图摆脱我项目中的所有警告,但我偶然发现“警告函数'getPositionValue'的复杂度为 7。允许的最大值为 5 英寸,我不确定如何解决它。这是一个.js文件。

代码如下:

export function getPositionValue(station) {
  const { latitude, longitude } = station;
  if (latitude && longitude) {
    return `${latitude}, ${longitude}`;
  }
  if (latitude && !longitude) {
    return `${latitude}, 0`;
  }
  if (!latitude && longitude) {
    return `0, ${longitude}`;
  }
  return `${0}, ${0}`;
}

欢迎任何了解如何解决此警告的想法!

JavaScript vue.js eslint 警告

评论

1赞 Pointy 10/6/2023
目前尚不清楚为什么你需要测试,如果你对结果的零感到满意。if

答:

0赞 Elvis Adomnica 10/6/2023 #1

您可以在解构中使用默认值,因此您的函数可能如下所示:

export function getPositionValue(station) {
  const { latitude = 0, longitude = 0 } = station;
  return `${latitude}, ${longitude}`;
}

评论

0赞 VLAZ 10/6/2023
getPositionValue({latitude: null})
1赞 Estus Flask 10/6/2023
${latitude || 0}, ${longitude || 0}在这种情况下更普遍和可取
0赞 Elvis Adomnica 10/6/2023
@VLAZ如果输入中的可能值是“null”,则可以更改为: ''' export function getPositionValue(station) { const { latitude, longitude} = station; return${latitude || 0}, ${longitude || 0}; }```
2赞 Bruno Miguel Groth 10/6/2023 #2

如果您使用的是 ESLint,则此错误是指您的代码在返回某些内容之前可以传递的路径数量。您可以在 https://eslint.org/docs/latest/rules/complexity 中查看此规则的详细信息。

为了解决这个问题,你可以根据文档使用“if - else”而不是“if - if - if”序列。

此方法可以有一个返回行,并返回如下内容:

export function getPositionValue(station) {
  const { latitude, longitude } = station;

  return `${latitude ?? '0' }, ${longitude ?? '0'}`
}

这是一个 Nullish 合并运算符,如果存在,则返回值,否则返回 0。

此外,您可以将 ES 配置 (.eslintrc.cjs) 中的最大复杂度更改为 7(不推荐)。

希望我能帮到你。

评论

0赞 Bruno Miguel Groth 10/18/2023
此答案已被编辑。查看退货行以获取更适用的解决方案。