Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 69 additions & 12 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
var myEach = require('./myEach');
var myMap = require('./myEach');
var myReduce = require('./myEach');
var myMap = require('./myMap');
var myReduce = require('./myReduce');
var myFilter = require('./myFilter');
var mySome = require('./mySome');
var myEvery = require('./myEvery');

/* *********************************************************************
You can edit this file
It will make use of your code in myEach.js, myMap.js and myReduce.js
Expand All @@ -12,22 +16,75 @@ var numArray = [0,1,10,100,1000];

/* myEach */


console.log('Testing myEach, output: ');
//
// myEach(numArray, function print(element, index, arr) {
// console.log('inside myEach', element, index, arr);
// });
myEach(numArray, function print(element) {
// console.log('inside myEach', element, index, arr);
console.log(element);
});


/* myMap */

var input = ["a","b","c"];
var output = myMap(input, function capitalize(v){
return v.toUpperCase();
});
console.log('Testing myMap, output: ',output);
console.log(output === ["A", "B", "C"]) // assertion

/* myMap */

// var input = ["a","b","c"];
// var output = myMap(input, function capitalize(v){
// return v.toUpperCase();
// });
// console.log('Testing myMap')
// console.log(output === ["A", "B", "C"]) // assertion
/* myReduce */

var reduceInput = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var stringInput = ["hi","hello","boo"];
var reduceOutput = myReduce(stringInput, function add(previous, current) {
return previous + current;
});
console.log('Testing myReduce, output: ',reduceOutput);

/* myFilter */

var fruits = ["Apple", "Banana", "Cherry", "Durian", "Elderberry",
"Fig", "Guava", "Huckleberry", "Ice plant", "Jackfruit"];

var vowels = ["A", "E", "I", "O", "U"];
function vowelFruit(fruitCollection) {
var result = vowels.indexOf(fruitCollection[0]) >= 0; // indexOf returns -1 if not found
//console.log("result for " + fruitCollection + " is " + result);
return result;
}

var vowelFruits = myFilter(fruits,vowelFruit);
console.log("vowelFruits: ",vowelFruits);
//=> ["Apple", "Elderberry", "Ice plant"]


/* mySome */

function isBiggerThan10(element, index, array) {
return element > 10;
}

console.log('Testing mySome:');
console.log("False: ",mySome([2, 5, 8, 1, 4],isBiggerThan10)); // false
console.log("True: ",mySome([12, 5, 8, 1, 4],isBiggerThan10)); // true
console.log("False: ",mySome([4],isBiggerThan10)); // false
console.log("False: ",mySome([10],isBiggerThan10)); // false
console.log("True: ",mySome([11],isBiggerThan10)); // true

console.log("the end");


/* myEvery */

function isBigEnough(element, index, array) {
return element >= 10;
}

console.log('Testing myEvery:');
console.log("False: ",myEvery([12, 5, 8, 130, 44],isBigEnough)); // false
console.log("True: ",myEvery([12, 54, 18, 130, 44],isBigEnough)); // true
console.log("False: ",myEvery([5],isBigEnough)); // false
console.log("True: ",myEvery([44],isBigEnough)); // true
6 changes: 3 additions & 3 deletions myEach.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ForEach

function myEach(arr, callback) {

// CODE INSIDE HERE //

for(var i=0;i<arr.length;i++) {
callback(arr[i],i,arr)
}
}

/*
Expand Down
14 changes: 14 additions & 0 deletions myEvery.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@


function myEvery(arr, callback) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if (!callback(arr[i], result, i, arr)) {
return false;
}
}
return true;
}


module.exports = myEvery;
15 changes: 15 additions & 0 deletions myFilter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

function myFilter(arr, callback) {
var result = [];
for (var i = 0; i < arr.length; i++) {
var value = arr[i];
if (callback(arr[i], value, i, arr)) {
result.push(value);
}
}
return result;
}



module.exports = myFilter;
8 changes: 5 additions & 3 deletions myMap.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Map

function myMap(arr, callback) {

// CODE INSIDE HERE //

var newArr=[];
for(var i=0;i<arr.length;i++) {
newArr[i]=callback(arr[i],i,arr);
}
return newArr;
}

/*
Expand Down
28 changes: 24 additions & 4 deletions myReduce.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,30 @@
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce for more details
// Don't worry about initialValue at first. You can always add it in later.

function myReduce(arr, callback) {

// CODE INSIDE HERE //

function myReduce(arr, callback, initialValue) {
if(!initialValue){
var output=arr[0];
if(arr.length>1){
for(var i=1;i<arr.length;i++) {
output=callback(output,arr[i],i,arr);
}
}
else {
return arr[0];
}
}
else {
var output=initialValue;
if(arr.length>1){
for(var i=0;i<arr.length;i++) {
output=callback(output,arr[i],i,arr);
}
}
else {
return initialValue;
}
}
return output;
}

/*
Expand Down
14 changes: 14 additions & 0 deletions mySome.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@


function mySome(arr, callback) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if (callback(arr[i], result, i, arr)) {
return true;
}
}
return false;
}


module.exports = mySome;