JSFiddle - React, Tailwind, and code Playground

by andrei

HTML

<ol id="result"></ol>

JavaScript

/*
* 1. Write a function that takes two sorted lists of numbers and merges them into a single sorted list.
*/

var task1 = function (arr1, arr2) {
    var arr3 = [];
    // check sort direction on each array
    var order1 = arr1.length && (arr1[0] < arr1[arr1.length-1]) ? "ASC" : "DESC",
        order2 = arr2.length && (arr2[0] < arr1[arr1.length-1]) ? "ASC" : "DESC";
    
    if (order1 == "ASC" && order2 == "ASC" && arr1[0] < arr2[0]) {
        arr3 = arr2.concat(arr1);
    } else {
        arr3 = arr1.concat(arr2);
    }
    
    // now sort the resulted array
    arr3.sort(function(a,b) {
        if (a > b) {
            return 1;
        } else if (a < b) {
            return -1;
        } else {
            return 0;
        }
    });
    
    return arr3;
};

// tests
var results = document.querySelectorAll("#result")[0];
var addToResults = function(message) {
    var result = document.createElement("li");
    result.innerHTML = message;
    results.appendChild(result);
};

// helpers
var assert = function (message, expected, received) {
    if (expected === received) {
        addToResults(message);
        return true;
    } else {
        var error = "Expected value: " + expected + ". Received value: " + received;
        addToResults("<b style='color:red'>" + message + "</b>: " + error);
        return false;
    }
};

var arraysMatch = function(arr1, arr2) {
    return arr1.every(function(elt, index) {
        return arr2[index] === elt;
    });
};

// test task 1
var test_task1 = (function (arr1, arr2) {
    var arr1 = [1,2,3],
        arr2 = [4,5,6],
        arr3 = [6,5,4],
        arr4 = [3,2,1],
        arr5 = [2,3,4];
    
    var expectedCombinedArrayAsc = [1,2,3,4,5,6],
        expectedCombinedArrayMatch = [1,2,2,3,3,4];
    var result = task1(arr1, arr2),
        result_ = task1(arr2, arr1),
        result__ = task1(arr1, arr5),
        result2 = task1(arr1, arr3),
        result2_ = task1(arr3, arr1),
        result3 = task1(arr4, arr3),
   ...