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