Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can a Javascript condition be between numbers?

I'm looking to identify a category based on this table: Table

I have an if statement that seems to work for some conditions, but not others. R, P, and Q are working, but conditions that go between numbers aren't returning the right category.

If statement:

function getCategory(featureFunctionalScore, featureDysfunctionalScore) {
    if (featureFunctionalScore == 4 && featureDysfunctionalScore == -2) {
        return "Performance";
    } else if (featureFunctionalScore == 4 && featureDysfunctionalScore <= -1 && featureDysfunctionalScore > 4) {
        return "Attractive"
    } else if (featureFunctionalScore <= -1 && featureFunctionalScore > 4 && featureDysfunctionalScore == 4) {
        return "Expected"
    } else if ((featureFunctionalScore >= -2 && featureFunctionalScore <= 2 && featureDysfunctionalScore == -2) || (featureFunctionalScore == -2 && featureDysfunctionalScore >= -2 && featureDysfunctionalScore <= 2)) {
        return "Reverse"
    } else if ((featureFunctionalScore == 4 && featureDysfunctionalScore == -2) || (featureFunctionalScore == 2 && featureDysfunctionalScore == -1) || (featureFunctionalScore == -1 && featureDysfunctionalScore == 2) || (featureFunctionalScore == -2 && featureDysfunctionalScore == 4)) {
        return "Questionable"
    } else {
        return "Indifferent"
    };
};

Am I missing something important?

Update This statement works in Excel, but I'm struggling to get it to work in JS:

=IF(OR(AND(C3 <= 2, B3 <= -1), AND(C3 <= -1, B3 <= 2)), "R", IF(AND(C3 <= 2, C3 >= -1, B3 <= 2, B3 >= -1), "I", IF(AND(C3 >= 2,B3 >= -1, B3 <= 2),"A", IF(AND(C3 <= 2, B3 <= 4, B3 >= 2), "M", IF(AND(C3 >= 2, B3 >= 2), "P", "Q")))))
like image 585
Aaron Benjamin Avatar asked Apr 09 '26 15:04

Aaron Benjamin


1 Answers

This should be what you're looking for. I'm sure it could be optimized, but it works. JSFiddle: https://jsfiddle.net/yxb7tr9n/

  function getCategory(x,y){
    var answer = -999;

    if (x == 4 && y == 4){
        answer = "p";
    }else if([-1,0,2].indexOf(x) >= 0 && y == 4){
        answer = "A";    
    }else if((x == -2 && y == 4) || (x == -1 && y == 2) || (x == 4, y == -2)){
        answer = "Q";    
    }else if(x == 4 && [-1,0,2].indexOf(y) >= 0) {
        answer = "M";        
    }else if((x == -1 && [-1,0].indexOf(y) >= 0) || (x == 0 && [-1,0,2].indexOf(y) >= 0) || (x == 2 && [0,2].indexOf(y) >= 0)){
        answer = "I";    
    }else if ((x == -2 && [-2,-1,0,2].indexOf(y) >= 0) || (y == -2 && [-2,-1,0,2].indexOf(x) >= 0)) {
        answer = "R";
    }else{
        answer = "??";
    }

    return answer;
  }

UPDATE: Alternate version using a coordinate mapping system. JSFiddle: https://jsfiddle.net/g2d6p4rL/4/

  function indexOfCustom (parentArray, searchElement) {
    for ( var i = 0; i < parentArray.length; i++ ) {
      if ( parentArray[i][0] == searchElement[0] && parentArray[i][1] == searchElement[1] ) {
        return i;
      }
    }
    return -1;
  }

  function getCategory2(x,y){    
    var p = [[4,4]];
    var q = [[-2,4],[-1,2],[2,-1],[4,-2]];
    var a = [[-1,4],[0,4],[2,4]];
    var m = [[4,2],[4,0],[4,-1]];
    var i = [[0,2],[2,2],[-1,0],[0,0],[2,0],[-1,-1],[0,-1]];
    var r = [[-2,2],[-2,0],[-2,-1],[-2,-2],[-1,-2],[0,-2],[2,-2]];

    coord = [x,y];

    if (indexOfCustom(p,coord) >= 0){
        return "p";
    } else if (indexOfCustom(q,coord) >= 0){
        return "Q";
    } else if (indexOfCustom(a,coord) >= 0){
        return "A";
    } else if (indexOfCustom(m,coord) >= 0){
        return "M";
    } else if (indexOfCustom(i,coord) >= 0){
        return "I";
    } else if (indexOfCustom(r,coord) >= 0){
        return "R";
    }else{
        return "??";
    }
  }

Output of all answers:

[-2,-2] = R
[-2,-1] = R
[-2,0] = R
[-2,2] = R
[-2,4] = Q
[-1,-2] = R
[-1,-1] = I
[-1,0] = I
[-1,2] = Q
[-1,4] = A
[0,-2] = R
[0,-1] = I
[0,0] = I
[0,2] = I
[0,4] = A
[2,-2] = R
[2,-1] = Q
[2,0] = I
[2,2] = I
[2,4] = A
[4,-2] = Q
[4,-1] = M
[4,0] = M
[4,2] = M
[4,4] = p
like image 126
Lil' Bits Avatar answered Apr 12 '26 04:04

Lil' Bits



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!