Herr Specht: [] + "" bzw. [] in array.reduce

Beitrag lesen

Hallo, Disclaimer:

eingangs die Background Story, wer sich nur für des Pudels Kern interessiert, dem sei es gestattet, zum zweiten Code Snippet fortzufahren.

Bin bei der Reduce Methode auf eine [für mich] interessante Eigenheit von JavaScript gestoßen.

Ursprünglich wollte ich, dass ALLE Array Elements, die durch reduce geschleust werden, behandelt werden, bevor sie dem Accumulator hinzugefügt werden, und nicht dass das allererste unbehandelt als acc hinterlegt wird (das allerdings nur als Background Info).

Hab dann mit "" als Ausgangspunkt experimentiert, stolperte allerdings über die Erkenntnis, dass auch [] das gewünschte Resultat liefert:

function emptyArrTest(arr) {
	return arr.reduce((acc, cur) => {
		// do some amazing! jazz!! with cur (also the very first one)
		acc = acc + cur;
		return acc;
	}, []); // oder "", liefert beides dasselbe Resultat! :O
}

Vereinfacht passiert hier in Wahrheit ja sozusagen folgendes:

[] + cur + cur + cur // bis alle durchlaufen sind

i.e., z.B. "ein unglaublich toller(!) String":

[] + "ein unglaublich toller(!) String"

...logge ich das in die Konsole, ergibt das

ein unglaublich toller(!) String

AAAAAAAAABER

{} + "ein unglaublich toller(!) String"

...ein Objekt wird NICHT ignoriert, hier schnauzt mich die Konsole mit

[object Object]ein String

an!

Warum?

UND: ist das Good Practice, einer Reduce Methode in diesem Fall ein leeres Array zu übergeben?

(Kenne ich das von React - z.B. useEffect mit [] als Argument?)

Es dankt euch recht, Herr Specht.