В основном на функциональных языках ожидается, что вы будете использовать функцию zipWith
, где принятый ответ имитирует, что в JS с побочными эффектами.
Однако вы также можете имитировать сопоставление с шаблоном Haskell в JS и придуматьрекурсивное решение без каких-либо побочных эффектов
var cities = "Paris , Bruxelles , Amsterdam , Berlin , Bayburt".split(/\s*,\s*/),
pairs = ([f,s,...rest]) => s == void 0 ? []
: [f + "_" + s].concat(pairs([s,...rest]));
console.log(pairs(cities));