locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
29 lines (28 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.intercalate = intercalate;
function intercalate(separator, lists) {
// discuss at: https://locutus.io/haskell/list/intercalate/
// original by: Kevin van Zonneveld (https://kvz.io)
// note 1: Concatenates lists with separator inserted between sublists, like Haskell Data.List.intercalate.
// example 1: intercalate([0], [[1, 2], [3], [4, 5]])
// returns 1: [1, 2, 0, 3, 0, 4, 5]
// example 2: intercalate([' '], [['a'], ['b'], ['c']])
// returns 2: ['a', ' ', 'b', ' ', 'c']
// example 3: intercalate([], [[1], [2]])
// returns 3: [1, 2]
if (!Array.isArray(separator) || !Array.isArray(lists) || lists.length === 0) {
return [];
}
const out = [];
for (let i = 0; i < lists.length; i++) {
const chunk = lists[i];
if (Array.isArray(chunk)) {
out.push(...chunk);
}
if (i < lists.length - 1) {
out.push(...separator);
}
}
return out;
}