Powiedzmy, że mam tablicę var arr = [1, 2, 3]
i chcę oddzielić każdy element przez element np. var sep = "&"
, więc wynikiem jest [1, "&", 2, "&", 3]
.Traszki sposób na przeplatanie elementów między wszystkimi elementami tablicy JavaScript?
Innym sposobem, aby o tym pomyśleć, jest wykonanie Array.prototype.join (arr.join(sep)
) bez wyniku będącego łańcuchem (ponieważ elementy i separator, których próbuję użyć, to Obiekty, a nie ciągi znaków).
Czy istnieje funkcjonalny/miła/elegancki sposób to zrobić albo w ES6/7 lub lodash bez czegoś, co czuje niezgrabne jak:
_.flatten(arr.map((el, i) => [el, i < arr.length-1 ? sep : null])) // too complex
lub
_.flatten(arr.map(el => [el, sep]).slice(0,-1) // extra sep added, memory wasted
lub nawet
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
Edytuj: Haskell ma tę funkcję, nazywa się intersperse
Jak już wspomniano powyżej, rodzimy dołączyć metoda nie działa, jak nie używam strun. Zaktualizuję pytanie innym przykładem. –
Widzę twój punkt widzenia. – Bryan
dodano nowe rozwiązanie poniżej. – Bryan