Javascript 转换小时、分钟、秒-清除代码
我用javascript创建了这个函数,可以在不同的时间单位之间进行转换。Javascript 转换小时、分钟、秒-清除代码,javascript,refactoring,Javascript,Refactoring,我用javascript创建了这个函数,可以在不同的时间单位之间进行转换。 例如,调用convertTimes(90,{symbol:“min”},{symbol:“hour”})返回1.5 function convertTimes(oldTimeValue, oldTimeUnits, newTimeUnits){ const newTimeUnitSymbol = newTimeUnits.symbol if (oldTimeUnits.symbol === newTimeUni
例如,调用
convertTimes(90,{symbol:“min”},{symbol:“hour”})
返回1.5
function convertTimes(oldTimeValue, oldTimeUnits, newTimeUnits){
const newTimeUnitSymbol = newTimeUnits.symbol
if (oldTimeUnits.symbol === newTimeUnitSymbol) { return oldTimeValue }
if (oldTimeUnits.symbol === "hour") {
if (newTimeUnitSymbol === "min") { return oldTimeValue * 60 }
else if (newTimeUnitSymbol === "sec") { return oldTimeValue * 3600 }
} else if (oldTimeUnits.symbol === "min") {
if (newTimeUnitSymbol === "hour") { return oldTimeValue / 60 }
else if (newTimeUnitSymbol === "sec") { return oldTimeValue * 60 }
} else if (oldTimeUnits.symbol === "sec") {
if (newTimeUnitSymbol === "hour") { return oldTimeValue / 3600 }
else if (newTimeUnitSymbol === "min") { return oldTimeValue / 60 }
}
}
您能否建议一种重构/清理此代码的方法,这样它就不会嵌套那么多if-else调用?如何将符号组合映射到比率
var conversions = {
hour: {
min: 60,
sec: 3600
},
min: {
hour: 1/60,
sec: 60
},
sec:{
hour: 1/3600,
min: 1/60
}
}
return oldTimeValue * conversions[oldTimeUnits.symbol][newTimeUnitSymbol]
const CONVERSION = {
"hour:min":60,
"hour:sec":3600,
"min:hour":1/60,
"min:sec":60,
"sec:hour":1/3600,
"sec:min":1/60
}
function convertTimes(oldTimeValue, oldTimeUnits, newTimeUnits){
// TODO validate symbols
if (oldTimeUnits.symbol === newTimeUnits.symbol) { return oldTimeValue }
return oldTimeValue * CONVERSION[oldTimeUnits.symbol+":"+newTimeUnits.symbol];
}
如何将符号组合映射到比率
const CONVERSION = {
"hour:min":60,
"hour:sec":3600,
"min:hour":1/60,
"min:sec":60,
"sec:hour":1/3600,
"sec:min":1/60
}
function convertTimes(oldTimeValue, oldTimeUnits, newTimeUnits){
// TODO validate symbols
if (oldTimeUnits.symbol === newTimeUnits.symbol) { return oldTimeValue }
return oldTimeValue * CONVERSION[oldTimeUnits.symbol+":"+newTimeUnits.symbol];
}
你可能想使用这个功能。他们已经解决了所有的边缘情况。您可能想查看使用情况。他们已经解决了所有的边缘问题。