gpt4 book ai didi

javascript - 通过重复 if/else 部分简化函数

转载 作者:行者123 更新时间:2023-12-02 15:33:32 28 4
gpt4 key购买 nike

我正在尝试简化此功能,因为数据对象可以有多种类型,并且每种类型都有男性和女性版本。对象中元素的数量和名称始终相同。

如您所见,大部分代码都是重复的...

function calculate(type, j, value, s) {
for (var i = j; i > 4; i--) {
if (type == 'weight') {
if (s == 'f') {
if (weightFemale.hasOwnProperty(i)) {
var m = weightFemale[i][0],
l = weightFemale[i][1],
s = weightFemale[i][2];
return getcalc( m,l,s );
}
}
else {
if (weightMale.hasOwnProperty(i)) {
var m = weightMale[i][0],
l = weightMale[i][1],
s = weightMale[i][2];
return getcalc( m,l,s );
}
}
}
else if (type == 'length') {
if (s == 'f') {
if (lengthFemale.hasOwnProperty(i)) {
var m = lengthFemale[i][0],
l = lengthFemale[i][1],
s = lengthFemale[i][2],
return getcalc( m,l,s );
}
}
else {
if (lengthMale.hasOwnProperty(i)) {
var m = lengthMale[i][0],
l = lengthMale[i][1],
s = lengthMale[i][2],
return getcalc( m,l,s );
}
}
}
}
return false;
}

如何简化类型和性别的 if/else 部分?

最佳答案

由于您对每个对象执行相同的操作,因此只需让您的条件定义单个对象引用并仅调用计算一次。

类似于:

var obj;

if (type == 'weight') {
obj = s == 'f' ? weightFemale : weightMale;
} else if (type == 'length') {
obj = s == 'f' ? lengthFemale : lengthMale;
}

if (obj.hasOwnProperty(i)) {
var m = obj[i][0],
l = obj[i][1],
s = obj[i][2];
return getcalc(m, l, s);
}

关于javascript - 通过重复 if/else 部分简化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33136806/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com