Alternatives imbriquées opérateur ternaire en JS

Personnellement, j'aime ternaire opérateurs, et à mon humble avis, ils font des expressions complexes très facile à digérer. Prenez celui-ci:

  word = (res.distance === 0) ? 'a'
    : (res.distance === 1 && res.difference > 3) ? 'b'
    : (res.distance === 2 && res.difference > 5 && String(res.key).length > 5) ? 'c'
    : 'd';

Toutefois, dans notre projet de ESLINT règles imbriquées ternaire opérateurs sont interdits, donc je dois me débarrasser de ce qui précède.

J'essaie de trouver des alternatives à cette approche. Je n'ai vraiment pas envie de le transformer en un énorme if /else, mais ne sais pas si il y a d'autres options.

Peut-être un switch déclaration qu'il regarde comme il y a quelques scénarios que vous souhaitez évaluer: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
Si vous pensez qu'ils font expressions complexes faciles à digérer, il suffit de désactiver cette stupide eslint règle.
Je suis en train de faire sur la base d'un eslint jeu de règles qui n'est pas à moi de décider.
Peut-être consulter les cette approche si vous voulez éviter de if/else et aussi comme des expressions
Il pourrait être ['a', res.difference > 3 && 'b', res.difference > 5 && String(res.key).length > 5 && 'c'][res.distance] || 'd', mais si nous avions appeler "raisonnables" est discutable 🙂

OriginalL'auteur dthree | 2015-08-29