Umgekehrter Weg, ein Element zwischen allen Elementen in einem JavaScript-Array zu verteilen?

Say Ich habe ein Arrayvar arr = [1, 2, 3], und ich möchte jedes Element durch ein Element trennen, z.var sep = "&", also ist die Ausgabe[1, "&", 2, "&", 3].

Eine andere Möglichkeit, darüber nachzudenken, ist Array.prototype.join arr.join(sep)) ohne dass das Ergebnis eine Zeichenfolge ist (weil die Elemente und das Trennzeichen, die ich verwenden möchte, Objekte und keine Zeichenfolgen sind).

Gibt es eine funktionale / nette / elegante Möglichkeit, dies in es6 / 7 oder lodash zu tun, ohne dass sich etwas klobig anfühlt wie:

_.flatten(arr.map((el, i) => [el, i < arr.length-1 ? sep : null])) // too complex

ode

_.flatten(arr.map(el => [el, sep]).slice(0,-1) // extra sep added, memory wasted

oder auc

arr.reduce((prev,curr) => { prev.push(curr, sep); return prev; }, []).slice(0,-1)
// probably the best out of the three, but I have to do a map already
// and I still have the same problem as the previous two - either
// inline ternary or slice

Edit: Haskell hat diese Funktion, genanntdurchsetze

Antworten auf die Frage(26)

Ihre Antwort auf die Frage