Anagram checker: Write a function that takes two strings and returns true if they are anagrams of each other.

function isAnagram(str1, str2) {
    return (
        str1
        .split("")
        .sort()
        .join("") ===
        str2
        .split("")
        .sort()
        .join("")
    );
}

Flatten an array: Write a function that takes an array of arrays and returns a single, flattened array.

function flattenArray(arr) {
  return arr.reduce((acc, val) => acc.concat(val), []);
}      

Longest common prefix: Write a function that takes an array of strings and returns the longest common prefix.

function longestCommonPrefix(strs) {
    if (strs.length === 0) return "";
    if (strs.length === 1) return strs[0];

    let prefix = strs[0];
    for (let i = 1; i < strs.length; i++) {
        while (strs[i].indexOf(prefix) !== 0) {
            prefix = prefix.substring(0, prefix.length - 1);
            if (!prefix) return "";
        }
    }

    return prefix;
}

Two Sum: Given an array of integers, find two numbers such that they add up to a specific target number.

function twoSum(nums, target) {
    let map = new Map();
    for (let i = 0; i < nums.length; i++) {
        let complement = target - nums[i];
        if (map.has(complement)) {
            return [map.get(complement), i];
        }
        map.set(nums[i], i);
    }
    return [];
}

Median of two sorted arrays: Given two sorted arrays, find the median element.

const median = (a1, a2) => {
    let x = a1.concat(a2);
    x.sort(function (a, b) {
        return a - b;
    });
    let len = x.length;

    return len % 2 === 0 ? (x[Math.floor(len / 2) - 1] + x[Math.ceil(len / 2)]) / 2 : x[Math.floor(len / 2)];

}
let a = [0, 2, 3, 5, 9];
let b = [1, 4];
console.log(median(a, b));

Reverse Integer: Write a function that takes an integer and returns its reverse.

function reverseInteger(n) {
    let r = n.toString().split('').reverse().join('');
    return Math.sign(n) * parseInt(r);
}

// Call
reverseInteger(-267);
reverseInteger(31522);

Merge two sorted arrays: Write a function that merges two sorted arrays into one sorted array.

const arr1 = [3, 5, 6, 10, 11, 20];
const arr2 = [1, 2, 7, 8, 15, 19];

mergeTwo(arr1, arr2); // [1, 2, 3, 5, 6, 7, 8, 10, 11, 15, 19, 20]

Or:

function mergeSortedArray(arr1,arr2){
    var tempArray = [];
    while(arr1.length || arr2.length) {
        if(typeof arr1[0] === 'undefined') {
            tempArray.push(arr2[0]);
            arr2.splice(0,1);
        } else if(arr1[0] > arr2[0]){
            tempArray.push(arr2[0]);
            arr2.splice(0,1);
        } else {
            tempArray.push(arr1[0]);
            arr1.splice(0,1);
        }
    }
    return tempArray;
}

FizzBuzz Tree: Write a function that takes a binary tree as input and returns an array with the values of each node, but for multiples of 3 replace the value with "Fizz", for multiples of 5 replace with "Buzz", and for multiples of both 3 and 5 replace with "FizzBuzz".

function fizzBuzz(n) {
    for (let i = 1; i <= n; i++) {
        if (i % 3 === 0 && i % 5 === 0) {
            console.log("FizzBuzz");
        } else if (i % 3 === 0) {
            console.log("Fizz");
        } else if (i % 5 === 0) {
            console.log("Buzz");
        } else {
            console.log(i);
        }
    }
}

Palindrome: Write a function that checks if a given string is a palindrome.

function isPalindrome(str) {
    return str === str.split("").reverse().join("");
}


Sum of an Array: Write a function that takes an array of numbers and returns the sum of its elements.

function sumArray(arr) {
    return arr.reduce((a, b) => a + b, 0);
}