Methode die ein Array/Objekt durchläuft - kann man auf jeden Loop zugreifen?
bearbeitet von
Hallo ebody,
warum ist loopObjArrData Methode einer Klasse? Sie verwendet keine Daten aus dem this-Objekt. Es wäre - je nach Aufgabe der Klasse - zu erwarten, dass entweder das durchlaufene Array oder das Filter-Array unter `this` zu finden ist.
Wenn Du eine Methode loopy hast, die irgendeine Form von Collection durchläuft, und Du der Methode etwas mitgeben möchtest, das pro Durchlauf aktiviert wird, benötigst Du einen eigenen Callback, den Du dann selbst aufrufst. Das geht mit einer for..of Schleife so:
~~~js
function loopy(collection, callback)
{
for (let entry of collection)
{
callback(entry);
}
}
let coll = [ "x", "y", "z" ];
loopy(coll, c => console.log(c));
=================== Callback als Pfeilfunktion
~~~
Du kannst eigene Callbacks auch aus einem anderen Callback heraus aufrufen. Funktionen sind Funktionen...
~~~js
function gloopy(collection, callback)
{
collection.forEach(entry => callback(entry));
}
let coll = [ "x", "y", "z" ];
gloopy(coll, c => console.log(c));
=================== Callback als Pfeilfunktion
~~~
Und natürlich spricht auch nichts dagegen, wenn ein Callback einen Wert zurückgibt.
~~~js
function summeWenn(collection, filterCallback) {
let summe = 0;
for (let entry of collection) {
if (filterCallback(entry))
summe += entry;
}
}
let werte = [ 1, 5, 9, 22, 12 ];
let kleinSum = summeWenn(werte, w => w < 10);
console.log(kleinSum); // 15, Summe aller Werte unter 10
~~~
Eine Pfeilfunktion wie `w => w < 10`, die hinter dem Pfeil nur einen einzelnen JavaScript-Ausdruck hat und keine geschweiften Klammern, gibt den Wert dieses Ausdrucks zurück. Für diesen Fall also true, wenn w < 10 ist und sonst false.
Hat Dir das weitergeholfen?
_Rolf_
--
sumpsi - posui - obstruxi