11// Math
2+ /**
3+ * get average between two numbers
4+ *
5+ * @param {number } number1
6+ * @param {number } number2
7+ * @returns {number }
8+ */
29function getMid ( number1 , number2 ) {
310 return Math . floor ( ( number1 + number2 ) / 2 )
411}
512
613// Arrays
14+
15+ /**
16+ * Filter an array depending on the given value
17+ *
18+ * @param {any[] } array
19+ * @param {any } value
20+ * @returns
21+ */
722function filterArray ( array , value ) {
823 return array . filter ( e => e != value ) ;
924}
1025
26+ /**
27+ * Get sum of all numbers in array
28+ *
29+ * @param {number[] } array array of numbers
30+ * @returns {number } sum of all numbers in array
31+ */
1132function sumOfArray ( array ) {
1233 return array . reduce ( ( a , b ) => a + b , 0 ) ;
1334}
1435
36+ /**
37+ * Sort an array of numbers in ascending order
38+ *
39+ * @param {number[] } array array of numbers
40+ */
1541function ascending ( array ) {
1642 array . sort ( function ( a , b ) { return a - b ; } ) ;
1743}
1844
45+ /**
46+ * Sort an array of numbers in descending order
47+ *
48+ * @param {number[] } array array of numbers
49+ */
1950function descending ( array ) {
2051 array . sort ( function ( a , b ) { return a - b ; } ) . reverse ( ) ;
2152}
2253
54+ /**
55+ * Get minimum value in array
56+ *
57+ * @param {number[] } array - Array of numbers
58+ * @returns {number }
59+ */
2360function minArray ( array ) {
24- let min = null ;
25- for ( let i = 0 ; i < array . length ; i ++ ) {
26- min == null ? min = array [ i ] : "" ;
27- array [ i ] < min ? min = array [ i ] : "" ;
28- }
29- return min ;
61+ return Math . min ( ...array ) ; // using math.min() to get minimum value in array is faster than using a for loop
3062}
3163
64+ /**
65+ * Get maximum value in array
66+ *
67+ * @param {number[] } array
68+ * @returns {number }
69+ */
3270function maxArray ( array ) {
33- let max = null ;
34- for ( let i = 0 ; i < array . length ; i ++ ) {
35- max == null ? max = array [ i ] : "" ;
36- array [ i ] > max ? max = array [ i ] : "" ;
37- }
38- return max ;
71+ return Math . max ( ...array ) // using math.max() to get maximum value in array is faster than using a for loop
3972}
4073
4174// Strings
75+
76+ /**
77+ *
78+ * @param {string } word string to be reversed
79+ * @returns {string }
80+ */
4281function reverseString ( word ) {
43- return word . split ( "" ) . reverse ( ) . join ( ) ;
82+ return word . split ( "" ) . reverse ( ) . join ( "" ) ;
83+
4484}
4585
4686// Numbers
87+
88+ /**
89+ * reverse a number (e.g. 12345 -> 54321)
90+ *
91+ * @param {number } number
92+ * @returns {number }
93+ */
4794function reverseNum ( number ) {
48- if ( number == 0 ) {
95+ // this code is changed from the original one because it didn't work properly when the number is decimal
96+ if ( number < 10 && number > - 10 ) {
4997 return number ;
5098 }
51- return Math . floor ( parseInt ( number ) ) > 0 ? parseInt ( number . toString ( ) . split ( "" ) . reverse ( ) . join ( "" ) ) : parseInt ( "-" + number . toString ( ) . split ( "" ) . reverse ( ) . join ( "" ) ) ;
99+ const parsedNumber = + ( number > 10 ? number : number * - 1 ) . toString ( ) . split ( "" ) . reverse ( ) . join ( "" ) ;
100+ return number > 10 ? parsedNumber : parsedNumber * - 1 ; // this code more readable than the other one also it works with decimals too
52101}
53102
54103// Valid Checks
104+
105+ /**
106+ * check if a number is even
107+ *
108+ * @param {number } number
109+ * @returns {boolean }
110+ */
55111function isEven ( number ) {
56112 return number % 2 == 0 ;
57113}
58114
115+ /**
116+ * check if a number is odd
117+ *
118+ * @param {number } number
119+ * @returns {boolean }
120+ */
59121function isOdd ( number ) {
60122 return number % 2 != 0 ;
61123}
62124
125+ /**
126+ * check if a string is a palindrome
127+ *
128+ * @param {string } word
129+ * @returns {boolean }
130+ */
63131function isPalindrome ( word ) {
64132 return word . toString ( ) == reverseString ( word . toString ( ) ) ;
65133}
66134
135+ /**
136+ * check if a number is prime
137+ *
138+ * @param {number } number
139+ * @returns {number | boolean }
140+ */
67141function isPrime ( number ) {
68- for ( i = 2 ; s = Math . sqrt ( number ) ; i ++ ) {
142+ // this code is changed from the original one because it was causing infinite loop
143+ // when number % i never equals 0
144+ for ( i = 2 , s = Math . sqrt ( number ) ; i <= s ; i ++ ) {
69145 if ( number % i === 0 ) {
70146 return false ;
71147 }
72148 }
73- return number 1 ;
74- }
149+ return number ;
150+ }
0 commit comments