This is a continuation to my earlier article : 4 JavaScript tips for shorter code
1. Replace Switch or If-Else with key value pairs
The switch
statement and if-else
statement evaluates an expression and executes statements associated with that case. But as the number of cases increases the code grows as well.
function returnDaySwitch(val) {
switch (val) {
case 1:
return "It's monday";
case 2:
return "It's tuesday";
case 3:
return "It's wednesday";
case 4:
return "It's thursday";
case 5:
return "It's friday";
case 6:
return "It's saturday";
case 7:
return "It's sunday";
default:
return "Enter a value between 1 - 7";
}
}
function returnDayIfElse(val) {
if(val==1){
return "It's monday";
}else if(val==2){
return "It's tuesday";
}else if(val==3){
return "It's wednesday";
}else if(val==4){
return "It's thursday";
}else if(val==5){
return "It's friday";
}else if(val==6){
return "It's saturday";
}else if(val==7){
return "It's sunday";
}else{
return "Enter a value between 1 - 7";
}
}
const day = 3;
console.log(returnDaySwitch(day)); //It's wednesday
console.log(returnDayIfElse(day)); //It's wednesday
This can be made simpler by using key-value pairs of an object.
function returnDayKeyValue(val) {
const returnDayObject = {
1: "It's monday",
2: "It's tuesday",
3: "It's wednesday",
4: "It's thursday",
5: "It's friday",
6: "It's saturday",
7: "It's sunday",
}
if(!returnDayObject[val]){
return "Enter a value between 1 - 7";
}
return returnDayObject[val]
}
cosnt day = 3;
console.log(returnDayKeyValue(day)); //It's wednesday
@lukeshiru gave some tips on how to make it more shorter
const dayToString = day =>
({
1: "It's Monday",
2: "It's Tuesday",
3: "It's Wednesday",
4: "It's Thursday",
5: "It's Friday",
6: "It's Saturday",
7: "It's Sunday",
}[day] ?? "Enter a value between 1 - 7");
Or
const dayToString = day =>
[
undefined,
"It's Monday",
"It's Tuesday",
"It's Wednesday",
"It's Thursday",
"It's Friday",
"It's Satuday",
"It's Sumday",
][day] ?? "Enter a value between 1 - 7";
2. Remove duplicate elements in an array
Duplicate elements in an array can be removed by Set constructor and spread syntax. Set constructor converts an array into a set which cannot have duplicate elements. Spread syntax can be used to convert the set object back to an array.
const array = [1,2,2,3,4,5]
const uniq = [...new Set(array)];
console.log(uniq) // [1,2,3,4,5]
3. Computed property names
You cannot set object keys as variables directly. It will read the variable names as key names
const key1 = "name";
const key2 = "age";
const student = {
key1:"john Doe",
key2:26
}
console.log(student)
//{ key1:"john Doe", key2:26 }
Starting with ECMAScript 2015, you can put an expression in brackets []
, that will be computed and used as the property name.
const key1 = "name";
const key2 = "age";
const student = {
[key1]:"john Doe",
[key2]:26
}
console.log(student)
//{ name:"john Doe", age:26 }
4. Prevent falsey value from evaluating to false
There are six falsey values in JavaScript: undefined
, null
, NaN
, 0
, ""
(empty string), and false
. A falsy value is something which evaluates to FALSE, for instance when checking a variable. There could be scenarios where you wont want any falsy value to evaluate to false.
const number = 5;
if(number){
console.log('The number exists')
}else{
console.log('The number do not exist')
}
Will print The number exists. But
const number = 0;
if(number){
console.log('The number exists')
}else{
console.log('The number do not exist')
}
Will print The number do not exists. This can be handled by giving an exception at the evaluation
const number = 0;
if(number===0?true:number){
console.log('The number exists')
}else{
console.log('The number do not exist')
}
@lukeshiru came to the rescue again simplifying it further in case if you are checking a number
const number = 0;
console.log(
typeof number === "number"
? "The number exists"
: "The number do not exist",
);
Will print The number exists. 0
at the expression can be changed with any of the falsy values.
Top comments (1)
Whoa these are so good. Appreciate a lot for taking the time and effort for this. I'll add this to the post.