UNPKG

locutus

Version:

Locutus other languages' standard libraries to JavaScript for fun and educational purposes

29 lines (28 loc) 1.07 kB
"use strict"; 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; }