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),
...