Skip to content

Instantly share code, notes, and snippets.

@nimitmaru
Last active August 29, 2015 14:15
Show Gist options
  • Save nimitmaru/6544e6d86ea8f8649140 to your computer and use it in GitHub Desktop.
Save nimitmaru/6544e6d86ea8f8649140 to your computer and use it in GitHub Desktop.
// 06_Functional
var doubler = function(n) {
return n * 2;
};
var map = function (array, iteratorFunc) {
var returnArray = [], val;
for (var i = 0; i < array.length; i++) {
val = iteratorFunc(array[i]);
returnArray.push(val);
}
return returnArray;
};
var filter = function(array, filterFunc) {
var returnArray = [];
for (var i = 0; i < array.length; i++) {
if (filterFunc(array[i])) {
returnArray.push(array[i]);
}
}
return returnArray;
};
var contains = function(collection, searchVal) {
for (key in collection) {
if (collection.hasOwnProperty(key)) {
if (collection[key] === searchVal) {
return true;
}
}
}
return false;
};
var countWords = function(sentence) {
return sentence.split(" ").length;
};
var countWordsInReduce = function (currentVal, sentence) {
return currentVal + countWords(sentence);
};
var reduce = function (array, startVal, combinerFunc) {
var currentVal = startVal;
for (var i = 0; i < array.length; i++) {
currentVal = combinerFunc(currentVal, array[i]);
}
return currentVal;
};
/* Recursive solution, not required but just FYI */
var reduce_recursive = function (array, startVal, combinerFunc) {
if (array.length === 0) {
return startVal;
}
var nextStartVal = combinerFunc(startVal, array.shift());
return reduce_recursive(array, nextStartVal, combinerFunc);
};
var sum = function (array) {
var adder = function(currentSum, nextVal) {
return currentSum + nextVal;
};
return reduce(array, 0, adder);
};
var every = function(array, checkerFunc) {
var everyIterator = function (currentVal, nextVal) {
return currentVal && checkerFunc(nextVal);
};
return reduce(array, true, everyIterator);
};
var any = function(array, checkerFunc) {
var anyIterator = function (currentVal, nextVal) {
return currentVal || checkerFunc(nextVal);
};
return reduce(array, false, anyIterator);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment