Skip to main content
added 1 character in body
Source Link
SirPython
  • 13.3k
  • 3
  • 38
  • 93
function calculate(type, j, value, s) {
    for (var i = j; i > 4; i--) { 
        if (type == 'weight') {
            var weight = s == 'f' ? weightFemale : weightMale;
            if (i < widthweight.length) {
                    var m = weight[i][0],
                        l = weight[i][1],
                        s = weight[i][2];       
                    return getcalc( m,l,s );
            }   
        }
        else if (type == 'length') {
                var length = s == 'f' ? lengthFemale : lengthMale;
                if (i < length.length) {
                        var m = length[i][0],
                            l = length[i][1],
                            s = length[i][2];       
                        return getcalc( m,l,s );
                }   
            }
        }
    }
    return false;
}
function calculate(type, j, value, s) {
    for (var i = j; i > 4; i--) { 
        if (type == 'weight') {
            var weight = s == 'f' ? weightFemale : weightMale;
            if (i < width.length) {
                    var m = weight[i][0],
                        l = weight[i][1],
                        s = weight[i][2];       
                    return getcalc( m,l,s );
            }   
        }
        else if (type == 'length') {
                var length = s == 'f' ? lengthFemale : lengthMale;
                if (i < length.length) {
                        var m = length[i][0],
                            l = length[i][1],
                            s = length[i][2];       
                        return getcalc( m,l,s );
                }   
            }
        }
    }
    return false;
}
function calculate(type, j, value, s) {
    for (var i = j; i > 4; i--) { 
        if (type == 'weight') {
            var weight = s == 'f' ? weightFemale : weightMale;
            if (i < weight.length) {
                    var m = weight[i][0],
                        l = weight[i][1],
                        s = weight[i][2];       
                    return getcalc( m,l,s );
            }   
        }
        else if (type == 'length') {
                var length = s == 'f' ? lengthFemale : lengthMale;
                if (i < length.length) {
                        var m = length[i][0],
                            l = length[i][1],
                            s = length[i][2];       
                        return getcalc( m,l,s );
                }   
            }
        }
    }
    return false;
}
Post Undeleted by SirPython
Post Deleted by SirPython
Source Link
SirPython
  • 13.3k
  • 3
  • 38
  • 93

if (s = 'f') { 

It seems that you are trying to do some comparison here (considering this is in a for-loop). However, you are using the assignment operator so this will always evaluate to true)


            if (s == 'f') { 
                if (weightFemale.hasOwnProperty(i)) {
                    var m = weightFemale[i][0],
                        l = weightFemale[i][1],
                        s = weightFemale[i][2];     
                    return getcalc( m,l,s );
                }
            }
            else {
                if (weightMale.hasOwnProperty(i)) {
                    var m = weightMale[i][0],
                        l = weightMale[i][1],
                        s = weightMale[i][2];       
                    return getcalc( m,l,s );
                }               
            }

These two inner if-statements are virtually identical, all except for weightMale and weightFemale. Duplicating code is bad practice, so I recommend that you use a ternary operator to decide whether or not you are going to use weightMale or weightFemale. Then, just execute using this new information.

Here is the ternary operator:

var weight = s == 'f' ? weightFemale : weightMale;

Now that you have this new weight variable, you can just use that when running the rest of the code, rather than the specific weightMale or weightFemale:

           if (weight.hasOwnProperty(i)) {
                var m = weight[i][0],
                    l = weight[i][1],
                    s = weight[i][2];       
                return getcalc( m,l,s );
            }

The same exact concept can be applied to the height section.


This is a rather strange way to see if an index exists in an array:

if (weightFemale.hasOwnProperty(i)) {

I think it would be better to check against the length of the array like this:

if (i < weightFemale.length) {

This looks better because then someone is just quickly looking over your code won't get tripped up and think that weightFemale is actually an object (yeah, everything is an object in JavaScript; I know. You get the point right?)


Here is what the code looks like now:

function calculate(type, j, value, s) {
    for (var i = j; i > 4; i--) { 
        if (type == 'weight') {
            var weight = s == 'f' ? weightFemale : weightMale;
            if (i < width.length) {
                    var m = weight[i][0],
                        l = weight[i][1],
                        s = weight[i][2];       
                    return getcalc( m,l,s );
            }   
        }
        else if (type == 'length') {
                var length = s == 'f' ? lengthFemale : lengthMale;
                if (i < length.length) {
                        var m = length[i][0],
                            l = length[i][1],
                            s = length[i][2];       
                        return getcalc( m,l,s );
                }   
            }
        }
    }
    return false;
}