2 votes

Peut-il y avoir une condition en Javascript entre des nombres ?

Je cherche à identifier une catégorie basée sur ce tableau : Tableau

J'ai une déclaration if qui semble fonctionner pour certaines conditions, mais pas pour d'autres. R, P et Q fonctionnent, mais les conditions qui se situent entre les chiffres ne retournent pas la bonne catégorie.

Déclaration if :

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"
    };
};

Est-ce que je passe à côté de quelque chose d'important ?

Mise à jour Cette déclaration fonctionne dans Excel, mais j'ai du mal à la faire fonctionner en 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")))))

2voto

Sam Pellino Points 650

Ce devrait être ce que vous cherchez. Je suis sûr que cela pourrait être optimisé, mais cela fonctionne. 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;
  }

MISE À JOUR : Version alternative utilisant un système de cartographie des coordonnées. 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 "??";
    }
  }

Sortie de toutes les réponses :

[-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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X