我很难在这里降低这个函数的认知复杂度,我试图将forEach中的内容分离为另一个函数,并在getCars函数中调用它,但失败了。有人能帮帮忙吗?
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({}, {}, {}));
发布于 2020-06-10 15:45:40
您可以缩短.forEach函数中的代码:
[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
(我发现使用匈牙利表示法总是知道变量的类型是很有帮助的。)
https://stackoverflow.com/questions/62297853
复制相似问题