Last active
August 29, 2015 14:15
-
-
Save nimitmaru/6544e6d86ea8f8649140 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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