Search code examples
javascriptif-statementlogical-operators

logical operators and if statements combination


I'm looking if there is an alternative to write this code cleaner and efficient. My goal is to set different values based on the hour of the day.

var hour = new Date().getHours();
var user = 'User4';

if (hour >= 4 && hour < 6) {
    user = 'User1';
}
if (hour >= 6 && hour < 13) {
    user = 'User2';
}
if (hour >= 13 && hour < 19) {
    user = 'User3';
}
if (hour >= 19) {
    user = 'User4';
}

I found this article online, but I couldn't achieve logical operators into this.

let values = {
    a: 1,
    b: 2,
};
let foo = values[ bar ] || 3;

Really appreciate your help! Thanks 😗


Solution

  • You can use else if to make code shorter and cleaner

    var hour = new Date().getHours();
    var user;
    
    if (hour < 4 || hour >= 19) {
      user = 'User4';
    } else if (hour < 6) {
      user = 'User1';
    } else if (hour < 13) {
      user = 'User2';
    } else if (hour < 19) {
      user = 'User3';
    }
    
    console.log(user)

    Using switch(true)

    var hour = new Date().getHours();
    var user;
    
    switch(true) {
      case (hour < 4 || 
            hour >= 19): user = 'User4'; break;
      case (hour < 6)  : user = 'User1'; break;
      case (hour < 13) : user = 'User2'; break;
      case (hour < 19) : user = 'User3'; break;
    }
    
    console.log(user)