/

Javascript Simple Algorithms

String spread split

const str = 'Hellow World';
[...str];
// Output: ["H", "e", "l", "l", "o", "w", " ", "W", "o", "r", "l", "d"]
// is same as
str.split('');

Longest word in a string

const LongestWord = text => {
  return Math.max(...[...text].map(word => word.length));
};
// LongestWord('Hello World')
// Output: 5

Is Palindrome

const word = 'mom';
[...word].every(
  (el, index, arr) =>
    el == arr.slice(arr.length - index - 1, arr.length - index)[0],
);

// Output: true

Substract two Arrays

const a1 = [1, 2, 3, 4, 5];
const a2 = [2, 3];

a1.filter(x => a2.indexOf(x) < 0);

Factorial tail call

const Factorial = (num, acc = 1) => {
  return num < 1 ? acc : Factorial(num - 1, num * acc);
};
// Factorial(4)
// Output: 24

Remove duplicate

const arr = [1,2,2,2,2,3,4,5,6];

// 1: Set

[..new Set(arr)]

// 2: Reduce && include

arr.reduce((acc, num) => acc.includes(num)?acc: [...acc, num]);

Title case a string

const toTitleCase = text => {
  return text.charAt(0).toUpperCase() + text.toLowerCase().slice(1);
};

Reverse a string

const revString = text => {
  return text.split('').reduce((acc, letter) => letter + acc);
};