Willi Wanilli: Frage zu Rückgabewert von Array.reduce()

Beitrag lesen

Hallo,

Frage zu array.reduce():

// Fallbeispiel A
function myFunc() {
      return myArr.reduce((acc,cur) => {
        acc[cur] = "Ein Wert";
        return acc;
      }, {});
    }

ergibt, wie erwartbar

{ one: "Ein Wert", two: "Ein Wert", three: "Ein Wert" }

Bisher dachte ich, das ließe sich auch vereinfachen und Shorthand simplifizieren als

// Fallbeispiel B
   function myFuncShort() {
      return myArr.reduce((acc,cur) => acc[cur] = "Ein Wert", {});
    }

Daraus resultiert aber nur Ein Wert.

Typischerweise benötigen Higher Order Functions doch kein 'return' wenn als 'Einzeiler' angegeben (zumindest ist dies bei 'map', 'filter', etc. der Fall!), ist das bei 'reduce' nicht so?

Bzw. ist der Rückgabewert dann nicht automatisch 'acc' und die Funktion weiß nicht, was sie zurückgeben soll?

Warum entspricht Fallbeispiel A nicht Fallbeispiel B?

Danke für Aufklärung,

Willi Wanilli