mardi 20 mars 2018

Simplify if condition with multiple variable using javascript

I am working on a jquery data tablr plugin and need to filter the table data based on some criteria. I have mainly 2 select box with 4 options each. When I select the drop down, I would like to sort the data table based on the selected value. Here I would like to sort the age and salary column from the data table. I am able to sort the data by checking some condtions, but I think it is not the correct way. If any new option will come, need to check that also. So here I would like to know that is there any easy method to achive this by reducing the number of condtions.

This is my drop down

Age:
<select id="min" name="min" class="filter">
    <option value="0">Select</option>
    <option value="1">20 and 30</option>
    <option value="2">30 and 40</option>
    <option value="3">>50</option>
</select>

Salary: 
<select id="max" name="max" class="filter">
    <option value="0">Select</option>
    <option value="1">50k and 80k</option>
    <option value="2">80k and 90k</option>
    <option value="3">>1 Lakh</option>
</select>

This is the condtion I have wrote and which worked for me.

var min    = parseInt( $('#min').val());  
var max    = parseInt( $('#max').val()); 
var age    = parseFloat( data[3] ) || 0; 
var salary = parseFloat( data[5] ) || 0;

            if(min==0 && max==0){
                return true;
            }else if(min==1 && max==0){
                var maxAge = 30;
                var minAge = 20;               
                if ( (age >= minAge && age<=maxAge) ){
                    return true;
                }  
            }else if(min==2 && max==0){
                var maxAge = 40;
                var minAge = 30;
                if ( (age > minAge && age<=maxAge) ){
                    return true;
                }   
            }else if(min==3 && max==0){
                var maxAge = '';
                var minAge = 50;
                if ( (age >= minAge ) ){
                    return true;
                }
            }else if(min==0 && max==1){                
                var maxSal = 80000;
                var minSal = 50000;
                if ( (salary >= minSal && salary<=maxSal) ){
                    return true;
                } 

            }else if(min==0 && max==2){                
                var maxSal = 90000;
                var minSal = 80000;
                if ( (salary > minSal && salary<=maxSal) ){
                    return true;
                } 

            }else if(min==0 && max==3){                
                var maxSal = '';
                var minSal = 100000;
                if ( (salary >= minSal ) ){
                    return true;
                }

            }else if(min==1 && max==1){                
                var maxAge = 30;
                var minAge = 20;
                var maxSal = 80000;
                var minSal = 50000;
                if ( (age >= minAge && age<=maxAge) && (salary >= minSal && salary<=maxSal) ){
                    return true;
                }  

            }else if(min==1 && max==2){                
                var maxAge = 30;
                var minAge = 20;
                var maxSal = 90000;
                var minSal = 80000;
                if ( (age >= minAge && age<=maxAge) && (salary > minSal && salary<=maxSal) ){
                    return true;
                }  

            }
            else if(min==1 && max==3){                
                var maxAge = 30;
                var minAge = 20;
                var maxSal = '';
                var minSal = 100000;
                if ( (age >= minAge && age<=maxAge) && (salary >= minSal) ){
                    return true;
                }  

            }else if(min==2 && max==1){                
                var maxAge = 40;
                var minAge = 30;
                var maxSal = 80000;
                var minSal = 50000;
                if ( (age > minAge && age<=maxAge) && (salary >= minSal && salary<=maxSal) ){
                    return true;
                }  

            }
            else if(min==2 && max==2){                
                var maxAge = 40;
                var minAge = 30;
                var maxSal = 90000;
                var minSal = 80000;
                if ( (age > minAge && age<=maxAge) && (salary > minSal && salary<=maxSal) ){
                    return true;
                }  

            }else if(min==2 && max==3){                
                var maxAge = 40;
                var minAge = 30;
                var maxSal = '';
                var minSal = 100000;
                if ( (age > minAge && age<=maxAge) && (salary >= minSal) ){
                    return true;
                }  

            }else if(min==3 && max==1){                
                var maxAge = '';
                var minAge = 50;
                var maxSal = 80000;
                var minSal = 50000;
                if ( (age >= minAge) && (salary >= minSal && salary<=maxSal) ){
                    return true;
                }  

            }else if(min==3 && max==2){                
                var maxAge = '';
                var minAge = 50;
                var maxSal = 90000;
                var minSal = 80000;
                if ( (age >= minAge) && (salary > minSal && salary<=maxSal) ){
                    return true;
                }  

            }else if(min==3 && max==3){                
                var maxAge = '';
                var minAge = 50;
                var maxSal = '';
                var minSal = 100000;
                if ( (age >= minAge) && (salary >= minSal) ){
                    return true;
                }  

            }
            return false;
        }

Can you guys help me to solve this with any easy way other than writing a lengthy if else condition?

Aucun commentaire:

Enregistrer un commentaire