布尔值? 函数1(项目,键
(:函数2(项目,键(
基于布尔值,它进入任一函数。因此,是否可以在更大程度上对其进行重构。需要建议。谢谢。
function1(item, key) {
getInstance().updateItem(item, {
flag1: "Fail",
flag2: "Fail",
flag3: "Fail",
flag4: "Fail",
flag5: "Fail",
[key]: cipFailedFlags
})
}
function2(item, key) {
getInstance().updateItem(item, {
[key]: cipFailedFlags
})
}
我们能否消除两个函数的使用并使其通用? 只有键值对在函数 1 中是额外的。我只是想减少这里的冗余。
您可以将布尔标志作为参数传递给函数,以在内部构建正确的对象,如下所示:
function oneFn(item, key, flag) {
getInstance().updateItem(item, Object.assign(
{ [key]: cipFailedFlags },
flag ? { flag1: "Fail", flag2: "Fail", /* etc... */ } : {}
));
}
如果您认为三元运算符降低了它的可读性,则可以改用变量和if
语句来更改函数:
function oneFn(item, key, flag) {
let config = { [key]: cipFailedFlags };
if (flag) {
config = { ...config, flag1: "Fail", flag2: "Fail", /* etc... */ };
}
getInstance().updateItem(item, config);
}
你真的需要这个功能吗?只需使用展开运算符,您可以在其中添加对象中不同的项目。
const params = myBool ?
{ a : 1, b: 2 } : {}
getInstance().updateItem(item, {
...params,
[key]: cipFailedFlags
})
显示它正在运行的示例
/* just a mock */
const getInstance = () => ({
updateItem: (a, b, c) => console.log(b)
})
function example(myBool) {
const item = "1"
const key = "x"
const cipFailedFlags = "y"
const params = myBool ? {
a: 1,
b: 2
} : {}
getInstance().updateItem(item, {
...params,
[key]: cipFailedFlags
})
}
example(true)
example(false)