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
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
.idea/
.idea/
25 changes: 25 additions & 0 deletions src/fonctions/closure.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
var denver = {
name: 'Denver',
age:12
};

var petitPied ={
name: 'Petit Pied',
age:-65000000
};

function pure(a,b){
//a.age = 15 ; NOT PURE because it changes a
return a.age + b.age; //PURE : for some input, will always return a value
}

console.log('pure :', pure(denver, petitPied))

function unpure(){
// "sonsole.log" or "screen()" will modify a stream
// capture the external petitPied object
// depens on external context and not only parameters
console.log('kick '+petitPied.name);
}

unpure();
99 changes: 99 additions & 0 deletions src/fonctions/es5.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
var topics = require('../data').topics;

// ******* Filtered topics *******
var result = topics.filter(function (topic) {
// returns true if we keep this topic
return topic.user.name === 'Leonard';
});
console.log('result :', result);

console.log('########');

var resultFat = topics.filter(topic => topic.user.name === 'Leonard');
console.log('resultFat :', resultFat);

console.log('########');


// ******* Mapped topics *******
var titles = topics.map(function (topic) {
return topic.title;
});
console.log('titles :', titles);

console.log('########');

var fatTitles = topics.map(topic => topic.title);
console.log('titles :', fatTitles);

// ******* Contain violence *******

var hasViolence = topics.some(function (topic) {
return topic.tags.includes('violence');
});
console.log('has violence : ', hasViolence);
console.log('########');



// ******* Sheldon's comments *******
var filtered = topics.filter(function (topic) {
return topic.comments.some(function (comment) {
return comment.user.name === 'Sheldon';
});
});
console.log('filtered : ', filtered);

var title = filtered.map(function (topic) {
return topic.title;
});
console.log('Sheldon Comments : ', title);

//fat arrow style
var fatFiltered = topics.filter(topic => topic.comments.some(comment => comment.user.name === 'Sheldon')).map(topic => topic.title);
console.log('Fat Sheldon Comments : ', fatFiltered);


// ******* Penny's sorted ids comments ********
var pennyComment = [];
var fatPennyComment = [];

var sortFunction = function (a, b) {
if (a === b) {
return 0;
}
return a < b ? -1 : 1;
};

topics.forEach(function (topic) {
return topic.comments.forEach(function (comment) {
if (comment.user.name === 'Penny') {
pennyComment.push(comment.id)
}
});
});
console.log('filtered : ', pennyComment.sort(sortFunction));

//fat arrow style
topics.filter(topic => topic.comments.forEach(comment => comment.user.name === 'Penny' ? fatPennyComment.push(comment.id) : 0));
console.log('filtered : ', fatPennyComment.sort(sortFunction));


// ******* "Fun" tags for non admin ********
var tableTag =[];

topics.forEach(function (topic){
topic.comments.forEach(function (comment) {
if(!comment.user.admin && comment.tags != undefined){
comment.tags.forEach(function (tag) {
if(tag.includes('fun')){
tableTag.push(comment.content);
}

})
}

})
});

console.log('tags : ', tableTag);
26 changes: 26 additions & 0 deletions src/fonctions/foreach.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
var users = require('../data').users;

users.forEach(function (user) {
console.log('user name : ', user.name);
});

console.log('######');
// no result sent by clog()
users.forEach(user => console.log('user name : ', user.name));


//************** forEach - display admin users **************
var admins = [];
var adminsFat = [];

// function style
users.forEach( function (user){
if(user.admin === true){
admins.push(user.name);
}
});
console.log('result : ',admins);

//fat arrow style (not very pertinent)
users.forEach( (user) => user.admin ? adminsFat.push(user.name) : '');
console.log('resultFat : ',adminsFat);
12 changes: 12 additions & 0 deletions src/fonctions/format.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
function add(a, b) { // more safe
return a + b;
}
console.log('2+3 = ', add(2, 3));

var mult = function (a, b) { // mult is a variable
return a * b;
};
console.log('4*3 = ', mult(4,3));

var divide = (a,b) => a/b; // fat arrow style (ES2015)
console.log('10/2 =', divide(10,2));
33 changes: 33 additions & 0 deletions src/fonctions/operations.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
function add(a, b) {
return a + b;
}

function divide(a, b) {
return a / b;
}

function multiply(a, b) {
return a * b;
}

var minus = function (a, b) {
return a - b;
};

console.log('a =', 2, 'b =', 6);
console.log('a*b =', multiply(2, 6));
console.log('a*b =', divide(2, 6));
console.log('a*b =', add(2, 6));
console.log('a*b =', minus(2, 6));

function operation(op, x, y) {
return op(x,y);
}

console.log('add ', operation(add, 56, 59));
console.log('add ', operation(multiply, 56, 59));

var ops = [add, divide, multiply, minus];

var rand = ops[Math.floor(Math.random() * ops.length)];
console.log('add random ', rand ,operation(rand, 56,59));
29 changes: 29 additions & 0 deletions src/fonctions/sort.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// ********* classer des nombres dans un tableau *********

var x = [0, 3, 5, 6, 10, 12, -12, 45, 34];
console.log('tableau de x :', x);

var sortFunction = function (a, b) {
if (a === b) {
return 0;
}
return a < b ? -1 : 1;
};

x.sort(sortFunction);
console.log('tableau de x :', x);


// ********* classer des objets *********
var users = require('../data').users;
// console.log('users', users);

function sortUsers(user1, user2) {
if (user1.name < user2.name) return -1;
if (user1.name > user2.name) return 1;
return 0;

}

users.sort(sortUsers);
console.log('users', users.map(user => user.name));
Empty file removed src/functions/closure.js
Empty file.
Empty file removed src/functions/es5.js
Empty file.
Empty file removed src/functions/foreach.js
Empty file.
Empty file removed src/functions/formats.js
Empty file.
Empty file removed src/functions/operation.js
Empty file.
Empty file removed src/functions/sort.js
Empty file.
27 changes: 27 additions & 0 deletions src/prorotypes/bind.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
function Dinosaurus(name){
this.size = 12;
this.name = name;
}
Dinosaurus.prototype.age = -65000000;

const denver = new Dinosaurus('Denver');

function Carnivore(){
}
Carnivore.prototype.eat = function (obj){
console.log(this.name + ' eats ' + obj.name);
}

const tRex = new Carnivore();
tRex.name = 'T Rex';

//modification :
const eating = tRex.eat;
eating(tRex);

//use bind to apply function to an object
boundToDenver = eating.bind(denver);
console.log('bound eating to denver');
boundToDenver(tRex);

eating.bind(denver)(tRex);
18 changes: 18 additions & 0 deletions src/prorotypes/priority.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
function Dinosaurus(name){
this.size = 12;
this.name = name;
}
Dinosaurus.prototype.age = -65000000;
Dinosaurus.prototype.size = 20;

const denver = new Dinosaurus('Denver');

const petitPied = new Dinosaurus('Petit Pied');

console.log('denver size : ', denver.size);

//Denver object is built from a prototype
//But denver has no prototype :(
//console.log('denver prototype size : ', denver.prototype.size);
denver.size = 150;
console.log('new denver size : ', denver.size);
46 changes: 46 additions & 0 deletions src/prorotypes/prototype.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/**
* Note that : we have a Uppercase
* It's just a convention
*/

function Dinosaurus(name){
this.size = 12;
this.name = name;
}
Dinosaurus.prototype.age = -65000000;

const denver = new Dinosaurus('Denver');
// new gives access to a prototype

const petitPied = new Dinosaurus('Petit Pied');
petitPied.size = 3;

console.log('name : ', denver.name);
console.log('size : ', denver.size);
console.log('name : ', petitPied.name);
console.log('size :', petitPied.size);

console.log('denver age : ',denver.age);
console.log('denver age : ',petitPied.age);

function TRex(){
this.name = 'Rex';
}
function Carnivore(){
}
Carnivore.prototype.eat = function (obj){
console.log(this.name + ' eats ' + obj.name);
}


// TRex.prototype = Dinosaurus.prototype;
// TRex.prototype = Carnivore.prototype;

Object.assign(TRex.prototype, Dinosaurus.prototype);
Object.assign(TRex.prototype, Carnivore.prototype);

const rex = new TRex();

console.log('rex age : ', rex.age);
console.log('rex size : ', rex.size);
rex.eat(petitPied);
25 changes: 25 additions & 0 deletions src/prorotypes/this.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
function Dinosaurus(name){
this.size = 12;
this.name = name;
}
Dinosaurus.prototype.age = -65000000;

const denver = new Dinosaurus('Denver');

function Carnivore(){
}
Carnivore.prototype.eat = function (obj){
console.log(this.name + ' eats ' + obj.name);
}

const tRex = new Carnivore();
tRex.eat(denver);

tRex.name = 'T Rex';
tRex.eat(denver);

denver.eat = tRex.eat;
denver.eat(tRex); // Object this : denver

const eating = tRex.eat;
eating(denver); // Object this : {}
Loading