From fe58dd75de8fb23f1d005b032c30e15f03e05746 Mon Sep 17 00:00:00 2001 From: Collin Betori Date: Mon, 11 Feb 2019 21:50:34 -0600 Subject: [PATCH 1/2] higherOrder HW all tests passing --- 06week/higherOrder.js | 103 ------------------------------ 06week/higherOrder/higherOrder.js | 48 ++++++++++++++ 06week/higherOrder/package.json | 9 +++ 06week/higherOrder/test.js | 88 +++++++++++++++++++++++++ 4 files changed, 145 insertions(+), 103 deletions(-) delete mode 100644 06week/higherOrder.js create mode 100644 06week/higherOrder/higherOrder.js create mode 100644 06week/higherOrder/package.json create mode 100644 06week/higherOrder/test.js diff --git a/06week/higherOrder.js b/06week/higherOrder.js deleted file mode 100644 index 73926e3dc..000000000 --- a/06week/higherOrder.js +++ /dev/null @@ -1,103 +0,0 @@ -'use strict'; - -const assert = require('assert'); - -function forEach(arr, callback) { - // Your code here -} - -function map(arr, callback) { - // Your code here -} - -function filter(arr, callback) { - // Your code here -} - -function some(arr, callback) { - // Your code here -} - -function every(arr, callback) { - // Your code here -} - -if (typeof describe === 'function') { - - describe('#forEach()', () => { - it('should call the callback the array.length number of times', () => { - let count = 0; - forEach([1, 2, 3], () => { - count++; - }); - assert.equal(count, 3); - }); - }); - - describe('#map()', () => { - const arr = [1, 2, 3]; - const mapped = map(arr, (num) => { - return num * num; - }); - it('should return new array with mapped items', () => { - assert.deepEqual(mapped, [1, 4, 9]); - }); - it('should not affect the original array', () => { - assert.deepEqual(arr, [1, 2, 3]); - }) - }); - - describe('#filter()', () => { - it('should return an array of items that pass the predicate test', () => { - const filtered = filter([1, 2, 3], (num) => { - return num % 2 === 0; - }); - assert.deepEqual(filtered, [2]); - }); - }); - - describe('#some()', () => { - let count = 0; - const somed = some([1, 2, 3, 4], (num) => { - count++; - return num % 2 === 0; - }); - it('should return true if at least one item passes the predicate test', () => { - assert.equal(somed, true); - }); - it('should stop at the first item that passes the predicate test', () => { - assert.equal(count, 2); - }); - it('should return false if no items pass the predicate test', () => { - const somed = some([1, 3, 5], (num) => { - return num % 2 === 0; - }); - assert.equal(somed, false); - }); - }); - - describe('#every()', () => { - it('should return true if at all passes the predicate test', () => { - const everied = every([2, 4, 6], (num) => { - return num % 2 === 0; - }); - assert.equal(everied, true); - }); - let count = 0; - const everied = every([2, 3, 4, 5], (num) => { - count++; - return num % 2 === 0; - }); - it('should return false if any item fails the predicate test', () => { - assert.equal(everied, false); - }); - it('should stop at the first item that fails the predicate test', () => { - assert.equal(count, 2); - }); - }); - -} else { - - console.log('Only run the tests on this one!') - -} diff --git a/06week/higherOrder/higherOrder.js b/06week/higherOrder/higherOrder.js new file mode 100644 index 000000000..dc827fa5a --- /dev/null +++ b/06week/higherOrder/higherOrder.js @@ -0,0 +1,48 @@ +'use strict'; + + +function forEach(arr, callback) { + arr.forEach(() => { + callback() + }); + return +} + +function map(arr, callback) { + let mapped = [] + arr.map((num)=>{ + mapped.push(num * num); + }); + return mapped +} + +function filter(arr, callback) { + let filtered = arr.filter((num)=>{ + return num % 2 === 0 ; + }) + return filtered +} + +function some(arr, callback) { + let somed = arr.some((num) => { + callback(num); + return num % 2 === 0 ; + }); + return somed +} + +function every(arr, callback) { + let everied = arr.every((num) =>{ + callback(num); + return num % 2 === 0; + }) + return everied +} + +module.exports = { + forEach, + map, + filter, + some, + every +} \ No newline at end of file diff --git a/06week/higherOrder/package.json b/06week/higherOrder/package.json new file mode 100644 index 000000000..f0e45d0fe --- /dev/null +++ b/06week/higherOrder/package.json @@ -0,0 +1,9 @@ +{ + "scripts": { + "start": "node higherOrder", + "test": "mocha" + }, + "devDependencies": { + "mocha": "^5.2.0" + } +} diff --git a/06week/higherOrder/test.js b/06week/higherOrder/test.js new file mode 100644 index 000000000..79f4b4e12 --- /dev/null +++ b/06week/higherOrder/test.js @@ -0,0 +1,88 @@ +'use strict'; + +const assert = require('assert'); +const forEach = require("./higherOrder").forEach; +const map = require("./higherOrder").map; +const filter = require("./higherOrder").filter; +const some = require("./higherOrder").some; +const every = require("./higherOrder").every; + +if (typeof describe === 'function') { + + describe('#forEach()', () => { + it('should call the callback the array.length number of times', () => { + let count = 0; + forEach([1, 2, 3], () => { + count++; + }); + assert.equal(count, 3); + }); + }); + + describe('#map()', () => { + const arr = [1, 2, 3]; + const mapped = map(arr, (num) => { + return num * num; + }); + it('should return new array with mapped items', () => { + assert.deepEqual(mapped, [1, 4, 9]); + }); + it('should not affect the original array', () => { + assert.deepEqual(arr, [1, 2, 3]); + }) + }); + + describe('#filter()', () => { + it('should return an array of items that pass the predicate test', () => { + const filtered = filter([1, 2, 3], (num) => { + return num % 2 === 0; + }); + assert.deepEqual(filtered, [2]); + }); + }); + + describe('#some()', () => { + let count = 0; + const somed = some([1, 2, 3, 4], (num) => { + count++; + return num % 2 === 0; + }); + it('should return true if at least one item passes the predicate test', () => { + assert.equal(somed, true); + }); + it('should stop at the first item that passes the predicate test', () => { + assert.equal(count, 2); + }); + it('should return false if no items pass the predicate test', () => { + const somed = some([1, 3, 5], (num) => { + return num % 2 === 0; + }); + assert.equal(somed, false); + }); + }); + + describe('#every()', () => { + it('should return true if at all passes the predicate test', () => { + const everied = every([2, 4, 6], (num) => { + return num % 2 === 0; + }); + assert.equal(everied, true); + }); + let count = 0; + const everied = every([2, 3, 4, 5], (num) => { + count++; + return num % 2 === 0; + }); + it('should return false if any item fails the predicate test', () => { + assert.equal(everied, false); + }); + it('should stop at the first item that fails the predicate test', () => { + assert.equal(count, 2); + }); + }); + + } else { + + console.log('Only run the tests on this one!') + + } \ No newline at end of file From da820812e8cd06e1b1771fc327458ea52126fb31 Mon Sep 17 00:00:00 2001 From: Collin Betori Date: Wed, 13 Feb 2019 21:33:13 -0600 Subject: [PATCH 2/2] higherOrder HW with For Loop --- 06week/higherOrder/higherOrder.js | 53 +++++++++++++++++-------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/06week/higherOrder/higherOrder.js b/06week/higherOrder/higherOrder.js index dc827fa5a..42fcd0a1e 100644 --- a/06week/higherOrder/higherOrder.js +++ b/06week/higherOrder/higherOrder.js @@ -2,41 +2,48 @@ function forEach(arr, callback) { - arr.forEach(() => { - callback() - }); - return + for (let i = 0; i < arr.length; i++){ + callback(arr) + } } + function map(arr, callback) { - let mapped = [] - arr.map((num)=>{ - mapped.push(num * num); - }); - return mapped + let newArray = [] + for (let i = 0; i < arr.length; i++){ + let newNum = callback(arr[i]) + newArray.push(newNum) + + } + return newArray; } function filter(arr, callback) { - let filtered = arr.filter((num)=>{ - return num % 2 === 0 ; - }) - return filtered + let newArray = [] + for (let i = 0; i < arr.length; i++){ + if(callback(arr[i]) == true){ + newArray.push(arr[i]) + }; + } + return newArray } function some(arr, callback) { - let somed = arr.some((num) => { - callback(num); - return num % 2 === 0 ; - }); - return somed + for (let i = 0; i < arr.length; i++){ + if(callback(arr[i]) == true){ + return true + } + } + return false } function every(arr, callback) { - let everied = arr.every((num) =>{ - callback(num); - return num % 2 === 0; - }) - return everied + for (let i = 0; i < arr.length; i++){ + if(callback(arr[i]) == false){ + return false; + } + } + return true } module.exports = {