diff --git a/meineLoesungen/closures.js b/meineLoesungen/closures.js new file mode 100644 index 0000000..5b25244 --- /dev/null +++ b/meineLoesungen/closures.js @@ -0,0 +1,10 @@ +// 1 +// a. Was gibt folgender Code aus? + +for (var i = 0; i < 4; i++) { + setTimeout(() => { + console.log(i) + }, 2000) +} + +// b. Wie kann ich das Programm ändern, damit es tut was es tun sollte. diff --git a/meineLoesungen/flow-control-funktional.js b/meineLoesungen/flow-control-funktional.js new file mode 100644 index 0000000..995cfa8 --- /dev/null +++ b/meineLoesungen/flow-control-funktional.js @@ -0,0 +1,34 @@ +// Soll die Quersumme 13 ergeben +const a = [1,34,5, 0, -4] +// let b = a.reduce((a,sum) => sum + a) +// console.log(b) // 40 => Falsch + + +// https://bobbyhadz.com/blog/javascript-split-number-into-array +let b = a.reduce((sum,a) => { + if(a > 0 && a < 10){ + return sum + a + } + if(a >= 10){ + let digits = Array.from(String(a), Number) + return sum + digits.reduce((d,s) => d+s) + } + return sum +}) +console.log(b) + +// Funktional: +function quersumme(arrayOfDigits){ + console.log(arrayOfDigits) + return arrayOfDigits.reduce((sum, n)=>{ + if(n > 0 && n < 10){ + return sum + n + } + if(n >= 10){ + return sum + Array.from(String(n), Number).reduce((s,d) => d+s) + } + return sum + }) +} +console.log(quersumme(a)) + diff --git a/meineLoesungen/fn-objects-callbacks.js b/meineLoesungen/fn-objects-callbacks.js new file mode 100644 index 0000000..8725f16 --- /dev/null +++ b/meineLoesungen/fn-objects-callbacks.js @@ -0,0 +1,18 @@ +// 1 +// gegeben +// function add(a, b){ +// return a + b +// } +// +// Erstelle eine Funktion namens aPlusb welche einen Parameter p entgegen nimmt, +// und intern immer add mit a=20 aufruft, b soll mit p belegt werden. +// Gib das Ergebnis der Berechnung zurück. +// Versuche zwei Lösungs-Varianten zu finden (Hint: bind). + + + +// 2 +// Die gegebene Funktion add aus Aufgabe 1 soll geändert werden. +// Neu möchten wir, dass immer alle Argumente geloggt werden (bevor die Berechnung gemacht wird). +// Der Aufrufer kann selbst entscheiden was für einen Logger er verwenden möchte. +// z.B. console.log oder console.warn wären mögliche Logger. diff --git a/meineLoesungen/functional.js b/meineLoesungen/functional.js new file mode 100644 index 0000000..8abc49e --- /dev/null +++ b/meineLoesungen/functional.js @@ -0,0 +1,58 @@ +let zahlen = [5,6,7,8] + +// 1 +{ + // Funktional + function sum(array){ + // Startwert || vorangegangener Wert:sum + // Aktuelle Zahl im Array:val + return array.reduce((sum,val) =>sum + val, 0); + } + console.log(sum(zahlen)) + + // Imperativ + let summe = 0 + for (const zahl of zahlen){ + summe + zahl + } + console.log(summe) +} + +//2 +{ + //Funktional + function even(array){ + // Current number in iteration:value + return array.map(value => value%2 === 0 ) + } + + console.log(even(zahlen)) + + // Imperativ + // Current number in iteration:v + let isEvenArr = zahlen.map(v => v%2 === 0) + console.log(isEvenArr) +} + +// 3.1 +{ + /** + * + * @param arr Array das gefiltert werden soll + * @param fn Funktion die mitgegeben wird um zu prüfen ob Kriterium erfüllt wird + */ + + function myFilter(arr,fn){ + let ret = [] + arr.forEach(v =>{ + if(fn(v)) ret.push(v) + }) + return ret + } + + let filtered = myFilter(zahlen,(n)=>n>6) + console.log(filtered) +} + + + diff --git a/meineLoesungen/modules/app.mjs b/meineLoesungen/modules/app.mjs new file mode 100644 index 0000000..e65edf8 --- /dev/null +++ b/meineLoesungen/modules/app.mjs @@ -0,0 +1,13 @@ +// 'use strict' // optional, weil im Browser via + +
+ + +