Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 94 additions & 18 deletions functionalty.js
Original file line number Diff line number Diff line change
@@ -1,74 +1,150 @@
// Math
/**
* get average between two numbers
*
* @param {number} number1
* @param {number} number2
* @returns {number}
*/
function getMid(number1, number2) {
return Math.floor((number1 + number2) / 2)
}

// Arrays

/**
* Filter an array depending on the given value
*
* @param {any[]} array
* @param {any} value
* @returns
*/
function filterArray(array, value) {
return array.filter(e => e != value);
}

/**
* Get sum of all numbers in array
*
* @param {number[]} array array of numbers
* @returns {number} sum of all numbers in array
*/
function sumOfArray(array) {
return array.reduce((a, b) => a + b, 0);
}

/**
* Sort an array of numbers in ascending order
*
* @param {number[]} array array of numbers
*/
function ascending(array) {
array.sort(function(a, b) {return a - b;});
}

/**
* Sort an array of numbers in descending order
*
* @param {number[]} array array of numbers
*/
function descending(array) {
array.sort(function(a, b) {return a - b;}).reverse();
}

/**
* Get minimum value in array
*
* @param {number[]} array - Array of numbers
* @returns {number}
*/
function minArray(array) {
let min = null;
for (let i = 0; i < array.length; i++) {
min == null ? min = array[i] : "";
array[i] < min ? min = array[i] : "";
}
return min;
return Math.min(...array); // using math.min() to get minimum value in array is faster than using a for loop
}

/**
* Get maximum value in array
*
* @param {number[]} array
* @returns {number}
*/
function maxArray(array) {
let max = null;
for (let i = 0; i < array.length; i++) {
max == null ? max = array[i] : "";
array[i] > max ? max = array[i] : "";
}
return max;
return Math.max(...array) // using math.max() to get maximum value in array is faster than using a for loop
}

// Strings

/**
*
* @param {string} word string to be reversed
* @returns {string}
*/
function reverseString(word) {
return word.split("").reverse().join();
return word.split("").reverse().join("");

}

// Numbers

/**
* reverse a number (e.g. 12345 -> 54321)
*
* @param {number} number
* @returns {number}
*/
function reverseNum(number) {
if (number == 0) {
// this code is changed from the original one because it didn't work properly when the number is decimal
if (number < 10 && number > -10) {
return number;
}
return Math.floor(parseInt(number)) > 0 ? parseInt(number.toString().split("").reverse().join("")) : parseInt("-" + number.toString().split("").reverse().join(""));
const parsedNumber = +(number > 10 ? number : number * -1).toString().split("").reverse().join("");
return number > 10 ? parsedNumber : parsedNumber * -1; // this code more readable than the other one also it works with decimals too
}

// Valid Checks

/**
* check if a number is even
*
* @param {number} number
* @returns {boolean}
*/
function isEven(number) {
return number % 2 == 0;
}

/**
* check if a number is odd
*
* @param {number} number
* @returns {boolean}
*/
function isOdd(number) {
return number % 2 != 0;
}

/**
* check if a string is a palindrome
*
* @param {string} word
* @returns {boolean}
*/
function isPalindrome(word) {
return word.toString() == reverseString(word.toString());
}

/**
* check if a number is prime
*
* @param {number} number
* @returns {number | boolean}
*/
function isPrime(number) {
for (i = 2; s = Math.sqrt(number); i++) {
// this code is changed from the original one because it was causing infinite loop
// when number % i never equals 0
for (i = 2, s = Math.sqrt(number); i <= s; i++) {
if (number % i === 0) {
return false;
}
}
return number 1;
}
return number;
}