Eloquent JavaScript - Chapter 5 - functions on functions - function chaining
by Denise Nepraunig
HTML
<h1>Function abstraction - JSON</h1>
<div id="output"></div>
<h2>stringify and parse</h2>
JavaScript
var output = document.getElementById("output");
var result;
var denise = {
sex: "F",
name: "Denise",
born: 1985,
loves: ["sushi", "horses", "kebap"]
};
var michelle = {
sex: "F",
name: "Michelle",
born: 1993,
loves: ["dogs", "kebap", "denise :-D"]
};
var christine = {
sex: "F",
name: "Christine",
born: 1967,
loves: ["honig-milch"]
};
var reinhard = {
sex: "M",
name: "Reinhard",
born: 1963,
loves: ["reininghaus", "schoko-haselnuss"]
};
var family = [];
family.push(denise);
family.push(michelle);
family.push(christine);
family.push(reinhard);
function average(arr) {
function plus (a, b) { return a+b };
return arr.reduce(plus) / arr.length;
}
function age(p) { return 2014 - p.born; }
function male(p) { return p.sex == "M"; }
function female(p) { return p.sex == "F"; }
console.log( "male persons", family.filter(male)) ;
console.log( "female persons", family.filter(female)) ;
console.log( "alter: ", family.map(age) );
console.log("durchschnitt", average(family.map(age)));
var schwestern = [];
schwestern.push(denise);
schwestern.push(michelle);
function filter(arr, fun) {
var passed = [];
for(var i = 0; i<arr.length; i++) {
if(fun(arr[i])) passed.push(arr[i]);
}
return passed;
}
console.log(schwestern);
var jungspund = filter(schwestern, function(person) {
return person.born > 1990;
});
console.log("jungspung: ", jungspund);
result = JSON.stringify(denise);
//var newdenise = JSON.parse(denise);
var o = {};
o = JSON.parse(result);
//var obj = JSON.parse(result);
//console.log(obj);
console.log(denise.born);
console.log(o);
output.innerHTML = result;