# Code Golfing in JavaScript

Code Golf in JavaScript refers to attempting a problem to solve using the least amount of characters possible. Like in Golf, the low score wins, the fewest amount of characters “wins”. JavaScript is a fantastic language for code golfing due to backward compatibility, quirks, it is being a high-level language, and all the coercion. So, here we will look at some Code Golfing techniques in JavaScript language: 1. Checks if a variable is equal to some positive no: We can simply do this with a bunch of if-else statements, but we have different methods also like subtracting that positive integer from the number and checks whether it is greater than zero or not.

• Original Code:
```if(a == 5){
yes();
}else{
no();
}
```
• Golfed Code – I
```x == 3 ? "y" : "n";
```
• Golfed Code – II
```x-3 ? "y" : "n";
```
• Golfed Code – III
```x^3 ? "y" : "n";
```

2. Checking the case of literals: We can even compare the literal with {} for checking its case, it returns true for the uppercase and false for the lowercase.

• Golfed Code:
```'g' < {}     // Returns false, lower case
'G' < {}     // Returns true, upper case
```

3. Floor the value: A straight forward solution is used in floor function present in the Math library but it takes little more characters. We can do the same in a few characters by using the | operator.

• Original Code:
```a = Math.floor(a);
```
• Golfed Code:
```a = 0 | a;
```

4. Ceil value: A straight forward solution is to use ceil function present in the Math library but it takes little more characters. We can do the same in a few characters by using the combination of %, ~ operator.

• Original Code:
```a = Math.ceil(a);
```
• Golfed Code:
```a = a%1 ? -~a : a;
```

5. Rounding the value: A straight forward solution is used to round function present in the Math library but it takes little more characters. We can do the same in a few characters by using the combination of |, + operator.

• Original Code:
```a = Math.round(a);
```
• Golfed Code:
```a = 0 | a + .5;
```

6. Arrow functions: Arrow functions provides a concise way to write functions in the JavaScript.

• Original Code:
```g = function (a) {
return a * a * a;
}
```
• Golfed Code:
```g = a => a*a*a;
```

7. Alternatives for min function: Ternary operator always saves bytes. We can compare two numbers using the ternary operator.

• Original Code:
```Math.min(x, y);
```
• Golfed Code:
```a < b ? a : b
```

8. Alternatives for max function: Ternary operator always saves bytes. We can compare two numbers using the ternary operator.

• Original Code:
```Math.max(x, y);
```
• Golfed Code:
```a < b ? b : a
```

9. Absolute value: A straight forward solution is to use absolute function present in the Math library but it takes little more characters. We can do the same in a few characters by using the ternary operator.

• Original Code:
```Math.abs(x)
```
• Golfed Code:
```x < 0 ? -x : x
```

10. Save bytes in Loops: We can save bytes by changing the variable on the last time used.

• Original Code:
```for(x = 0; x < 10; x++){
}
```
• Golfed Code:
```for(x = 0; x < 3 ; ){
}
```

11. Calculating Sum or Product of Array: We have the option to do task by iterating the loop but for saving bytes we can use eval and arithmetic operators like +, *, ^etc.

• Golfed Code:
```eval(a.join('+'))
eval(a.join`+`)

eval(a.join('*'))
eval(a.join`*`)
```

12. Check for NaN: NaN method in JavaScript is used to determines whether the passed value is NaN(Not a Number) and is of the type “Number”.

• Original Code:
```if(isNaN(x)){
}
```
• Golfed Code:
```if(x != x){
}
```

Note: It only works if typeof(x) == “number”

13. for vs while loops: Both loops are efficient in terms of time complexity but when it comes to space complexity, many times for loop outbeats while loop.

• Golfed Code:
```i = 10;
while(i--);    # While loop

for(i = 10; i--; );     # For loop
```

14. Combining Nested loops into a single loop: We can combine the nested loop of 2 or more degree into a single loop.

• Original Code:
```for(i = 10; i--; )
for(j = 5; j--; )
do_something(i, j)
```
• Golfed Code:
```for(i = 50; i--; )
do_something(0 | i/5, i%5)
```

15. Generating Random numbers between the range: We can use the Date class to generate the random number because the Date is stored internally in JavaScript as the number of milliseconds since an epoch.

• Golfed Code:
```new Date%1500   // Random integer 0 <= x < 1500
```

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.