首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将JavaScript中函数的认知复杂度从10降低到6

如何将JavaScript中函数的认知复杂度从10降低到6
EN

Stack Overflow用户
提问于 2020-06-10 15:17:10
回答 1查看 45关注 0票数 0

我很难在这里降低这个函数的认知复杂度,我试图将forEach中的内容分离为另一个函数,并在getCars函数中调用它,但失败了。有人能帮帮忙吗?

代码语言:javascript
复制
const getCars = (cars, config, types) => {
  const {
    carName
  } = types;
  const carObject = {};
  const carsRange = () => {}
  let carRange = carsRange(cars);
  Object.entries(cars).forEach(([key, value]) => {
    if (key === 'sedan' && value) {
      const carRangeVal = value.split(' ');
      const year = carRangeVal[1];
      const model = carRangeVal[0].substring(1, 2);
      carRange = generateCarRange(year, model);
    }
    if (key === 'suv' && value) {
      const carRangeVal = value.split(' ');
      const year = carRangeVal[1];
      const model = carRangeVal[0];
      carObject['model'] = true;
      carRange = checkYear(year, model);
    }
    if (value) {
      carObject[key] = value;
    }
  });

  if (
    config.header === 'TEST A' ||
    config.header === 'TEST B'
  ) {
    carObject['carName'] = carName[0].id;
  }

  carObject['configName'] = config.header;
  carObject['contractStartDate'] = carsRange[0];
  carObject['contractEndDate'] = carsRange[1];
  return carObject;
};

console.log(getCars({}, {}, {}));

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 15:45:40

您可以缩短.forEach函数中的代码:

代码语言:javascript
复制
[year,model] = value.split(' '); // destructuring assignment
if (key === 'sedan' && value) {
  model = model.substring(1, 2);
  carRange = generateCarRange(year, model);
}
if (key === 'suv' && value) {
  carObject['model'] = true;
  carRange = checkYear(year, model);
}

知道输入数据会很有帮助。

我有个预感,你最好用.map()而不是.forEach()

为什么要使用两个函数(generateCarRange()checkYear())来获取carRange

(我发现使用匈牙利表示法总是知道变量的类型是很有帮助的。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62297853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档