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
85 changes: 85 additions & 0 deletions classnote.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// insert a break point for you
debugger
// in chrome open cosnole enter i
// you can control it in the sources window

//console log arguments
var sum = function (num, num2){
console.log(arguments)
return num+num2
}

//doesn't work
var addOne = function (num) {return num+ 1}
addOne (1)(2)

//does work
var returnAddFunction = function(num1) {
var theFunction = function (num2){
return num1+num2
}
return theFunction
}

returnAddFunction(5)(2)

var add5 = returnAddFunction(5)
add5(2)

// using f map
var fmap= function(arr,func){
var holder = [];
for(i = 0; i<arr.length; i++){
holder.push(func(arr[i]))
}
return holder
}

var timestwo = function (num) {return 2*num}

fmap([1,2,3,4,5],timestwo)

//********** filtering using f map logic
mylist = [1,2,3]
holder =[]
for (i=0; i < mylist.length; i++){
if(mylist[i]%2==0){
holder.push(mylist[i])
}
}

//returns 2
holder

//but rather
var isEven = function (num){
return num % 2 == 0
}
// returns true / false
isEven(3)

var filter = function (arr, pred){
var holder = [];
for (var i = 0; i < arr.length ; i++){
//pred function will measure whether the condition is satisfied
if (pred (arr[i])){holder.push(arr[i])}
}
return holder
}

filter (mylist, isEven)

//

[5]==[5] // it will return false

5 == 5 // it will return true

// inline function return 4
(function(){return 4})()

//
_.each([1,2,3],alert);
_.map([1,2,3],alert)

// underscorejs.org
188 changes: 140 additions & 48 deletions example/example.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(function(){
(function (){

var map = L.map('map', {
center: [39.9522, -75.1639],
Expand All @@ -18,83 +18,175 @@
// Filter according to enrollment that is greater than this variable:
var minEnrollment = 300;


/*
// clean the data
for (var i = 0; i < schools.length - 1; i++) {
// If we have '19104 - 1234', splitting and taking the first (0th) element
// as an integer should yield a zip in the format above
if (typeof schools[i].ZIPCODE === 'string') {
var split = schools[i].ZIPCODE.split(' ');
var normalized_zip = parseInt(split[0]);
schools[i].ZIPCODE = normalized_zip;
}

var school2 = _.map(schools,function(zip) {
if(typeof zip.ZIPCODE === 'string') {
var split = zip.ZIPCODE.split(' ');
var normalized_zip = parseInt(split[0]);
zip.ZIPCODE = normalized_zip;
}
// Check out the use of typeof here — this was not a contrived example.
// Someone actually messed up the data entry.
if (typeof schools[i].GRADE_ORG === 'number') {
schools[i].HAS_KINDERGARTEN = schools[i].GRADE_LEVEL < 1;
schools[i].HAS_ELEMENTARY = 1 < schools[i].GRADE_LEVEL < 6;
schools[i].HAS_MIDDLE_SCHOOL = 5 < schools[i].GRADE_LEVEL < 9;
schools[i].HAS_HIGH_SCHOOL = 8 < schools[i].GRADE_LEVEL < 13;
} else {
schools[i].HAS_KINDERGARTEN = schools[i].GRADE_LEVEL.toUpperCase().indexOf('K') >= 0;
schools[i].HAS_ELEMENTARY = schools[i].GRADE_LEVEL.toUpperCase().indexOf('ELEM') >= 0;
schools[i].HAS_MIDDLE_SCHOOL = schools[i].GRADE_LEVEL.toUpperCase().indexOf('MID') >= 0;
schools[i].HAS_HIGH_SCHOOL = schools[i].GRADE_LEVEL.toUpperCase().indexOf('HIGH') >= 0;
}
if (typeof zip.GRADE_ORG === 'number') {
zip.HAS_KINDERGARTEN = zip.GRADE_LEVEL < 1;
zip.HAS_ELEMENTARY = 1 < zip.GRADE_LEVEL < 6;
zip.HAS_MIDDLE_SCHOOL = 5 < zip.GRADE_LEVEL < 9;
zip.HAS_HIGH_SCHOOL = 8 < zip.GRADE_LEVEL < 13;
} else {
zip.HAS_KINDERGARTEN = zip.GRADE_LEVEL.toUpperCase().indexOf('K') >= 0;
zip.HAS_ELEMENTARY = zip.GRADE_LEVEL.toUpperCase().indexOf('ELEM') >= 0;
zip.HAS_MIDDLE_SCHOOL = zip.GRADE_LEVEL.toUpperCase().indexOf('MID') >= 0;
zip.HAS_HIGH_SCHOOL = zip.GRADE_LEVEL.toUpperCase().indexOf('HIGH') >= 0;
}
return zip})

console.log(school2)
*/

//cleandata
var cleandata = function(x){
if(typeof x.ZIPCODE === 'string') {
var split = x.ZIPCODE.split(' ');
var normalized_zip = parseInt(split[0]);
x.ZIPCODE = normalized_zip;
}return x}

//has kindergarten function

var hasKindergarten = function(s){
if (typeof s.GRADE_ORG !=='string'){
s.HAS_KINDERGARTEN = s.GRADE_LEVEL < 1;
}else{
s.HAS_KINDERGARTEN = s.GRADE_LEVEL.toUpperCase().indexOf('K') >= 0;
} return s
}


//haselemntary
var hasElementary = function(s){
if (typeof s.GRADE_ORG !=='string'){
s.HAS_ELEMENTARY= 1 < s.GRADE_LEVEL < 6;
}else{
s.HAS_ELEMENTARY = s.GRADE_LEVEL.toUpperCase().indexOf('ELEM') >= 0;
} return s
}

//hasmiddle
var hasMiddle = function(s){
if (typeof s.GRADE_ORG !=='string'){
s.HAS_MIDDLE_SCHOOL= 5 < s.GRADE_LEVEL < 9;
}else{
s.HAS_MIDDLE_SCHOOL = s.GRADE_LEVEL.toUpperCase().indexOf('MID') >= 0;
}
return s
}

//hasHigh
var hasHigh = function(s){
if (typeof s.GRADE_ORG !=='string'){
s.HAS_HIGH_SCHOOL = 8 < s.GRADE_LEVEL < 13;
}else{
s.HAS_HIGH_SCHOOL = s.GRADE_LEVEL.toUpperCase().indexOf('HIGH') >= 0;
}
return s
}

var school2 = _.map(schools,function(y){
var clean = cleandata(y);
var first = hasKindergarten(clean);
var second = hasElementary(first);
var third = hasMiddle(second);
return hasHigh(third);
})

console.log(school2)



// var hasHSorKG = function(s){return hasHisghSchool(s) && hasKindergarten(s)}


// filter data
var filtered_data = [];
var filtered_out = [];
for (var i = 0; i < schools.length - 1; i++) {
/*
var school3 = _.filter(school2,function(eachone){
//for (var i = 0; i < schools.length - 1; i++) {
// These really should be predicates!
isOpen = schools[i].ACTIVE.toUpperCase() == 'OPEN';
isPublic = (schools[i].TYPE.toUpperCase() !== 'CHARTER' ||
schools[i].TYPE.toUpperCase() !== 'PRIVATE');
isSchool = (schools[i].HAS_KINDERGARTEN ||
schools[i].HAS_ELEMENTARY ||
schools[i].HAS_MIDDLE_SCHOOL ||
schools[i].HAS_HIGH_SCHOOL);
meetsMinimumEnrollment = schools[i].ENROLLMENT > minEnrollment;
meetsZipCondition = acceptedZipcodes.indexOf(schools[i].ZIPCODE) >= 0;
isOpen = eachone.ACTIVE.toUpperCase() == 'OPEN';
isPublic = (eachone.TYPE.toUpperCase() !== 'CHARTER' ||
eachone.TYPE.toUpperCase() !== 'PRIVATE');
isSchool = (eachone.HAS_KINDERGARTEN ||
eachone.HAS_ELEMENTARY ||
eachone.HAS_MIDDLE_SCHOOL ||
eachone.HAS_HIGH_SCHOOL);
meetsMinimumEnrollment = eachone.ENROLLMENT > minEnrollment;
meetsZipCondition = acceptedZipcodes.indexOf(eachone.ZIPCODE) >= 0;
filter_condition = (isOpen &&
isSchool &&
meetsMinimumEnrollment &&
!meetsZipCondition);

if (filter_condition) {
filtered_data.push(schools[i]);
return eachone
//filtered_data.push(eachone);
} else {
filtered_out.push(schools[i]);
filtered_out.push(eachone);
}
}
console.log('Included:', filtered_data.length);
console.log('Excluded:', filtered_out.length);
})

console.log(school3)
*/

var isOpen = function (o){return o.ACTIVE.toUpperCase() == 'OPEN'};
var isPublic = function (o){return o.TYPE.toUpperCase() !== 'CHARTER' ||
o.TYPE.toUpperCase() !== 'PRIVATE'}
var isSchool = function(o){return o.HAS_KINDERGARTEN ||
o.HAS_ELEMENTARY ||
o.HAS_MIDDLE_SCHOOL ||
o.HAS_HIGH_SCHOOL;
}
var minenroll = function(o){return o.ENROLLMENT > minEnrollment;}
var zipcondition = function (o){return acceptedZipcodes.indexOf(o.ZIPCODE) >= 0;}

var filtercond = function(o){return isOpen(o)&&isPublic(o)&&isSchool(o)&&minenroll(o)&&!zipcondition(o)}
var filterout = function(o){return !filtercond(o)}

var school3 = _.filter(school2,function(y){return filtercond(y)})

console.log(school3);

// console.log('Included:', filtered_data.length);
// console.log('Excluded:', filtered_out.length);


// main loop
var color;
for (var i = 0; i < filtered_data.length - 1; i++) {
isOpen = filtered_data[i].ACTIVE.toUpperCase() == 'OPEN';
isPublic = (filtered_data[i].TYPE.toUpperCase() !== 'CHARTER' ||
filtered_data[i].TYPE.toUpperCase() !== 'PRIVATE');
meetsMinimumEnrollment = filtered_data[i].ENROLLMENT > minEnrollment;
_.map(school3,function(final){
// for (var i = 0; i < final.length - 1; i++) {
isOpen = final.ACTIVE.toUpperCase() == 'OPEN';
isPublic = (final.TYPE.toUpperCase() !== 'CHARTER' ||
final.TYPE.toUpperCase() !== 'PRIVATE');
meetsMinimumEnrollment = final.ENROLLMENT > minEnrollment;

// Constructing the styling options for our map
if (filtered_data[i].HAS_HIGH_SCHOOL){
if (final.HAS_HIGH_SCHOOL){
color = '#0000FF'; // blue
} else if (filtered_data[i].HAS_MIDDLE_SCHOOL) {
} else if (final.HAS_MIDDLE_SCHOOL) {
color = '#00FF00'; // green
} else {
color = '#FF0000'; //red
}

// The style options - note that we're using an object to define properties
var pathOpts = {'radius': filtered_data[i].ENROLLMENT / 30,
var pathOpts = {'radius': final.ENROLLMENT / 30,
'fillColor': color};
L.circleMarker([filtered_data[i].Y, filtered_data[i].X], pathOpts)
.bindPopup(filtered_data[i].FACILNAME_LABEL)
L.circleMarker([final.Y, final.X], pathOpts)
.bindPopup(final.FACILNAME_LABEL)
.addTo(map);
}
})



})();
23 changes: 16 additions & 7 deletions lab/lab1/part1.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Instructions: "Write a function that adds one to the number provided"
Example: "plusOne(2) should return 3"
===================== */

var plusOne = function() {};
var plusOne = function (num) {return num + 1};

console.log('plusOne success:', plusOne(99) === 100);

Expand All @@ -17,7 +17,7 @@ Instructions: "Write a function, age, that takes a birth year and returns an age
Example: "age(2000) should return 18"
===================== */

var age = function(birth) {};
var age = function(birth) {return 2017-birth};

console.log('age success:', age(1971) === 46);

Expand All @@ -26,7 +26,10 @@ Instructions: "Write a function that returns true for numbers over 9000 and fals
Example: "over9000(22) should return false"
===================== */

var over9000 = function() {};
var over9000 = function(number) {
if (number > 9000) {return true}
else {return false}
};

console.log('over9000 success:', over9000(9001) === true && over9000(12) === false);

Expand All @@ -35,7 +38,7 @@ Instructions: "Write a function that returns the value of an object at a specifi
Example: "valueAtKey({'name': 'Nathan'}, 'name') should return 'Nathan'"
===================== */

var valueAtKey = function() {};
var valueAtKey = function(obj,b) {return obj[b]};

console.log('valueAtKey success:', valueAtKey({'foo': 'bar'}, 'foo') === 'bar');

Expand All @@ -45,7 +48,7 @@ Example: "y(0, 0, 0) should return 0; y(1, 1, 1) should return 2"
Remember: The standard mathematical expression for such a function is y=mx+b
===================== */

var y = function() {};
var y = function(m,x,b) {return m*x+b};

console.log('y success:', y(12, 1, 12) === 24);

Expand All @@ -54,7 +57,13 @@ Instructions: "Write a function which counts the number of times a value occurs
Example: "countItem(['a', 'b', 'a'], 'a') should return 2"
===================== */

var countItem = function() {};
var countItem = function(a,b) {
let x=0;
for (var i=0; i<a.length;i++){
if (a[i]==b){x=x+1}
else{}
}
return x
};

console.log('countItem success:', countItem([1, 2, 3, 4, 5, 4, 4], 4) === 3);

Loading