In this article we are going to solve 2 Codewars' [6th kyu ] problems using Javascript (ES6) and discuss approaches how problems can be solved .
Codewars is a great site for improving your problem solving skills and it's also great for discovering different approaches of other developers in solving each problems.
Problems at code wars are label by difficulty as kyu, [1st kyu] being the hardest and [8th kyu] being the easiest.
Let's now start with our first problem.
Codewars link: https://www.codewars.com/kata/matrix-addition/train/javascript
The problem is :
The solution:
Non ES6 approach:
We have created m as the variable that will hold the sum of cells in both a and b in same row and col.
And every row iteration we are adding an empty 1d array to m, so that we can store the sum of same cells for both a and b.
And would you believe the approach above can be reduced into a single line of code?
ES6 Approach:
In this approach we have used arrow function of Javascript, to omit the function() keyword, to make it more shorter.
Also using arrow function would omit the return keyword.
We have used map here to mutate the matrix's value, and we have another inner map since we are dealing with 2d array here.
Same as our solution above we have r and c which denotes the row and column of the cells we are adding .
Codewars link: https://www.codewars.com/kata/find-the-unique-number-1/train/javascript
The problem is :
The solution:
Non ES6 approach:
uniqObj is a variable that will hold the unique elements in the array as key.
hasOwnProperty() is an Object method that returns a boolean value if the key already exist in the object or not, if it exists we are setting it to true meaning the it is not unique, otherwise initialize it to false.
Object.keys() gets all the keys inside the object needed to iterate into the object values to find false in it, meaning it is a unique number then return the parseInt value of that key.
ES6 Approach:
Uses the same idea as we did above, but instead of declaring a var uniqObj and using forEach to accumulate its value, we used reduce() instead, as well as to finding which key is the only unique number.
Instead of using if in checking to the unique number, we used a ternary operator.
We also change parseInt(strNumber) into +strNumber, which is the shorthand for parsing int.
That ends our article in Solving 6th kyu Codewars problem using ES6.
Check out the 7th kyu version of this article: http://onecompileman.com/blogs/3