Skip to content

Instantly share code, notes, and snippets.

@mayashavin
Last active January 14, 2018 09:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mayashavin/728acc2636467ee4eaccb16d817e5f12 to your computer and use it in GitHub Desktop.
Save mayashavin/728acc2636467ee4eaccb16d817e5f12 to your computer and use it in GitHub Desktop.
JS Exercises
function deepEqual(a, b){
if (typeof a === 'object' && a !== null && typeof b === 'object' && b !== null){
var isEqual = Object.keys(a).length === Object.keys(b).length;
if (isEqual){
for (var key in a){
isEqual &= b.hasOwnProperty(key);
if (isEqual){
isEqual &= deepEqual(a[key], b[key]);
}
else{
break;
}
}
return Boolean(isEqual);
}
}
return a === b;
}
var obj = {here: {is: "an"}, object: 2};
console.log(deepEqual(obj, obj));
// → true
console.log(deepEqual(obj, {here: 1, object: 2}));
// → false
console.log(deepEqual(obj, {here: {is: "an"}, object: 2}));
// → true
function reverseArray(arr){
var reversed = [];
for (var i = arr.length - 1; i >= 0; i--){
reversed.push(arr[i]);
}
return reversed;
}
function reverseArrayInPlace(arr){
var start = 0, end = Math.floor(arr.length /2);
while (start < end){
swap(arr, start, arr.length - start - 1);
start++;
}
return arr;
}
function swap(arr, i, j){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
console.log(reverseArray(["A", "B", "C"]));
// → ["C", "B", "A"];
var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log(arrayValue);
// → [5, 4, 3, 2, 1]
//1. Create an array from a range [start, end] with step increment. If step is not defined, it will be 1.
//Accept also negative step but the range needs to start from large to small number.
//2. Calculate sum of elements of given array
function sum (arr){
var result = 0;
for (var i = 0; i < arr.length; i++){
result += arr[i];
}
return result;
}
function range(start, end, step){
var arr = [];
step = step ? step : 1;
if ((start > end && step <= 0) || (start <= end && step > 0)){
var begin = (start > end) ? end : start,
stop = (start > end) ? start : end;
var increment = Math.abs(step);
for (var i = begin; i <= stop; i+=increment){
if (start > end){
arr.unshift(i);
}
else{
arr.push(i);
}
}
}
return arr;
}
console.log(range(1, 10));
// → [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(range(5, 2, -1));
// → [5, 4, 3, 2]
console.log(sum(range(1, 10)));
// → 55
console.log(range(5,2,1));
console.log(range(5,2));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment