Search code examples
javascriptreactjsconditional-statementsconditional-operator

3 conditions - ternary conditional chains JavaScript react


So I'm just playing around with the rick and Morty API and I've never done a ternary with 3 conditions. Mozilla docs say you can, but it's not working for me. The code below shows the characters with the status alive in green and the rest are purple. I want alive to be green, dead to be red, unknown to be purple. I'm using chakra UI if anyone's curious. What am I doing wrong?

<Badge
  colorScheme={ c.status === "Alive" ? "green"
      : "unknown" ? "purple"
      : "red"
  }
>
  {c.status}
</Badge>

Solution

  • You have your symbols mixed up. Grouping with parentheses, your code is equivalent to

    c.status === "Alive" ? "green"
          : ("unknown" ? "purple" : "red")
    

    You need instead

    c.status === 'Alive'
      ? 'green'
      : c.status === 'unknown' ? 'purple' : 'red'
    

    Or you could use a lookup table instead - it'd be more readable.

    const colorsByStatus = {
      Alive: 'green',
      unknown: 'purple',
      dead: 'red'
    };
    
    // ...
    
    colorSceme={colorsByStatus[c.status]}