这段代码在我的代码中重复了很多次,但 x
、y
和 z
当然发生了变化。有没有更好的办法?
if (x == "hour") {
y = z * 60;
} else if (x == "day") {
y = z * 1440;
} else if (x == "week") {
y = z * 10080;
}
更新……涉及到 store.getters。它们不是普通的变量。
if (this.tempUsersTriggerIntervelIdentifier === "minute") {
this.convertedNewUsersTriggerIntervel =
this.$store.getters.getUsersTriggerTime;
} else if (this.tempDefaultRunIntervelIdentifier == "hour") {
this.convertedNewDefaultRunIntervel =
this.$store.getters.getOrganizationsDefaultTriggerTime * 60;
} else if (this.tempDefaultRunIntervelIdentifier == "day") {
this.convertedNewDefaultRunIntervel =
this.$store.getters.getOrganizationsDefaultTriggerTime * 1440;
} else if (this.tempDefaultRunIntervelIdentifier == "week") {
this.convertedNewDefaultRunIntervel =
this.$store.getters.getOrganizationsDefaultTriggerTime * 10080;
}
我想做最好的做法。
答案 0 :(得分:5)
const factors = {
'hour' : 60,
'day' : 1440,
'week' : 10080
};
let y = z * factors[x];
试试这个“地图对象”风格。你可以替换
<块引用>因素[x]
与
<块引用>因素.x
但是如果您切换到 ts,它对 TypeScript 不友好。
[对更新问题的回答]
你的代码不酷!您检查来自不同对象引用的案例,这些案例不干净且难以掌握。可以干净很多。不管怎样,你可以试试这个:
if (this.tempUsersTriggerIntervelIdentifier === "minute") {
this.convertedNewUsersTriggerIntervel = this.$store.getters.getUsersTriggerTime;
} else {
this.convertedNewDefaultRunIntervel =
this.$store.getters.getOrganizationsDefaultTriggerTime *
factors[this.tempDefaultRunIntervelIdentifier];
}
答案 1 :(得分:2)
我认为 switch 是处理多种情况最合适的方式。
function getMinutes (x, z) {
switch (x) {
case 'hour': z *= 60; break;
case 'day': z *= 1440; break;
case 'week': z *= 10080; break;
default: z *= 60; break;
}
return z;
}
// somewhere in your code
const y = getMinutes('day', 1);