Skip to content

Commit 0b2cda3

Browse files
authored
Merge pull request #1 from OmarWebDev/omarwebdev-patch-1
Optimization for the code
2 parents 6449669 + 44d6737 commit 0b2cda3

File tree

1 file changed

+94
-18
lines changed

1 file changed

+94
-18
lines changed

functionalty.js

Lines changed: 94 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,150 @@
11
// Math
2+
/**
3+
* get average between two numbers
4+
*
5+
* @param {number} number1
6+
* @param {number} number2
7+
* @returns {number}
8+
*/
29
function 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+
*/
722
function 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+
*/
1132
function 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+
*/
1541
function 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+
*/
1950
function 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+
*/
2360
function 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+
*/
3270
function 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+
*/
4281
function 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+
*/
4794
function 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+
*/
55111
function 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+
*/
59121
function 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+
*/
63131
function 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+
*/
67141
function 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

Comments
 (0)