Если вам нужно решение, близкое к тому, что есть в вопросе, вы можете просто заставить reduce
вернуть строку слов, разделенных символом, таким как ','
(например, "get_out_of,the,way"
), а затем split
результирующая строка по этому символу:
let result = arr.reduce((a, b) =>
isPrepOrParticle(b)? a + "_" + b: a + "," + b
).split(",");
Просто убедитесь, что используется символ, не используемый ни одной из строк в массиве arr
.
Примечание: В этом решении ожидается, что в arr
будет хотя бы один элемент. Вы можете проверить это перед выполнением кода выше.