Javascript 重构共享相同变量的两个JS函数

Javascript 重构共享相同变量的两个JS函数,javascript,jquery,refactoring,dry,Javascript,Jquery,Refactoring,Dry,重构以下两个包含非常相似的变量声明的函数的最佳方法是什么: function minFeeCheck(input) { input.value = parseFloat(input.value).toFixed(2); var minFeeUpdate = parseFloat($("#minimumFee").val()).toFixed(2); var maxFeeUpdate = parseFloat($("#maximumFee&qu

重构以下两个包含非常相似的变量声明的函数的最佳方法是什么:

function minFeeCheck(input) {
    input.value = parseFloat(input.value).toFixed(2);
    var minFeeUpdate = parseFloat($("#minimumFee").val()).toFixed(2);
    var maxFeeUpdate = parseFloat($("#maximumFee").val()).toFixed(2);
    var minInt = parseInt(minFeeUpdate);
    var maxInt = parseInt(maxFeeUpdate);
       if (minFeeUpdate < 0) input.value = 0;
       if (minInt > maxInt) input.value = maxFeeUpdate;
       if (minInt > maxInt) {
           input.value = minFeeUpdate;
           $("#maximumFee").val(minFeeUpdate);
       }
}
function maxFeeCheck(input) {
    input.value = parseFloat(input.value).toFixed(2);
    var minFeeUpdate = parseFloat($("#minimumFee").val()).toFixed(2);
    var maxFeeUpdate = parseFloat($("#maximumFee").val()).toFixed(2);
    var minInt = parseInt(minFeeUpdate);
    var maxInt = parseInt(maxFeeUpdate);
       if (maxFeeUpdate < 0) input.value = 0;
       if (maxInt < minInt) {
           input.value = maxFeeUpdate;
           $("#minimumFee").val(maxFeeUpdate);
       }
}
功能检查(输入){
input.value=parseFloat(input.value).toFixed(2);
var minFeeUpdate=parseFloat($(“#minimumFee”).val()).toFixed(2);
var maxFeeUpdate=parseFloat($(“#maximumFee”).val()).toFixed(2);
var minInt=parseInt(minFeeUpdate);
var maxInt=parseInt(maxFeeUpdate);
如果(minFeeUpdate<0)input.value=0;
如果(minInt>maxInt)input.value=maxFeeUpdate;
如果(最小值>最大值){
input.value=minFeeUpdate;
$(“#最高费用”).val(minFeeUpdate);
}
}
函数maxFeeCheck(输入){
input.value=parseFloat(input.value).toFixed(2);
var minFeeUpdate=parseFloat($(“#minimumFee”).val()).toFixed(2);
var maxFeeUpdate=parseFloat($(“#maximumFee”).val()).toFixed(2);
var minInt=parseInt(minFeeUpdate);
var maxInt=parseInt(maxFeeUpdate);
如果(maxFeeUpdate<0)input.value=0;
如果(最大值<最小值){
input.value=maxFeeUpdate;
$(“#最低费用”).val(maxFeeUpdate);
}
}
除了一个最小目标和一个最大目标外,这两个功能似乎相似。在保持相同功能的同时,最理想、最干净的写出来的方法是什么。谢谢

更新

在@gaetanoM的帮助下,这里有一个可能的解决方案。它包括检查用户是否输入负数(这会将minFee和maxFee更改为零)

HTML:


JavaScript:

function minMaxFeeCheck(input, minormax) {
    input.value = parseFloat(input.value).toFixed(2);
    var minFeeUpdate = parseFloat($("#minimumFee").val()).toFixed(2);
    var maxFeeUpdate = parseFloat($("#maximumFee").val()).toFixed(2);
    var minInt = parseInt(minFeeUpdate);
    var maxInt = parseInt(maxFeeUpdate);
    var tmp = (minormax) ? minFeeUpdate : maxFeeUpdate;
    if (input.value < 0) {
          input.value = 0;
          $("#minimumFee").val(0);
    } else {
        if (tmp < 0) input.value = 0;
        if (minInt > maxInt) input.value = tmp;
        if (minInt > maxInt) {
            input.value = tmp;
            $("#minimumFee").val(tmp);
        }   
    }
}
函数minMaxFeeCheck(输入,minormax){
input.value=parseFloat(input.value).toFixed(2);
var minFeeUpdate=parseFloat($(“#minimumFee”).val()).toFixed(2);
var maxFeeUpdate=parseFloat($(“#maximumFee”).val()).toFixed(2);
var minInt=parseInt(minFeeUpdate);
var maxInt=parseInt(maxFeeUpdate);
var tmp=(minormax)?minFeeUpdate:maxFeeUpdate;
如果(输入值<0){
input.value=0;
美元(“#最低费用”).val(0);
}否则{
如果(tmp<0)input.value=0;
如果(minInt>maxInt)input.value=tmp;
如果(最小值>最大值){
input.value=tmp;
美元(“#最低费用”).val(tmp);
}   
}
}
我的建议是:

函数minmaxFeeCheck(输入,minormax){
input.value=parseFloat(input.value).toFixed(2);
var minFeeUpdate=parseFloat($(“#minimumFee”).val()).toFixed(2);
var maxFeeUpdate=parseFloat($(“#maximumFee”).val()).toFixed(2);
var minInt=parseInt(minFeeUpdate);
var maxInt=parseInt(maxFeeUpdate);
var tmp=(minormax)?minFeeUpdate:maxFeeUpdate;
如果(tmp<0)input.value=0;
如果(minInt>maxInt)input.value=tmp;
如果(最小值>最大值){
input.value=tmp;
美元(“#最低费用”).val(tmp);
}
}
事实上:

if (minInt > maxInt) {
与以下各项相同:

if (maxInt < minInt) {
if(maxInt
您可以尝试以下方法:

 function minMaxFeeCheck(input) {
  input.value = +parseFloat(input.value).toFixed(2);
  const minFeeUpdate = +parseFloat($("#minimumFee").val()).toFixed(2);
  const maxFeeUpdate = +parseFloat($("#maximumFee").val()).toFixed(2);
  minFeeUpdate < 0 ? input.value = 0 : minFeeUpdate > maxFeeUpdate ? input.value = minFeeUpdate && $('#maximumFee').val(minFeeUpdate) : input.value = maxFeeUpdate && $('#minimumFee').val(maxFeeUpdate);
}
函数minMaxFeeCheck(输入){
input.value=+parseFloat(input.value).toFixed(2);
const minFeeUpdate=+parseFloat($(“#minimumFee”).val()).toFixed(2);
const maxFeeUpdate=+parseFloat($(“#maximumFee”).val()).toFixed(2);
minFeeUpdate<0?input.value=0:minFeeUpdate>maxFeeUpdate?input.value=minFeeUpdate&&$('#maximumFee').val(minFeeUpdate):input.value=maxFeeUpdate&$('#maximumFee').val(maxFeeUpdate);
}

我非常喜欢这个解决方案。唯一的例外是它允许在最小输入中使用负数。我认为不应该允许使用负数。谢谢你的想法。@PeteAdamBialecki你可以应用Math.abs(…你的数字…)来获得绝对值…我认为Math.abs()这条路线很好,但强迫任何负数变为零可能是最好的路线。我会用你的建议更新我的问题。让我知道你的想法。@PeteAdamBialecki我读了你的更新。这是解决负值的极好方法。
 function minMaxFeeCheck(input) {
  input.value = +parseFloat(input.value).toFixed(2);
  const minFeeUpdate = +parseFloat($("#minimumFee").val()).toFixed(2);
  const maxFeeUpdate = +parseFloat($("#maximumFee").val()).toFixed(2);
  minFeeUpdate < 0 ? input.value = 0 : minFeeUpdate > maxFeeUpdate ? input.value = minFeeUpdate && $('#maximumFee').val(minFeeUpdate) : input.value = maxFeeUpdate && $('#minimumFee').val(maxFeeUpdate);
}