UNPKG

locutus

Version:

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

40 lines (39 loc) 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.implode = implode; function implode(...providedArgs) { // discuss at: https://locutus.io/php/implode/ // parity verified: PHP 8.3 // original by: Kevin van Zonneveld (https://kvz.io) // improved by: Waldo Malqui Silva (https://waldo.malqui.info) // improved by: Itsacon (https://www.itsacon.net/) // bugfixed by: Brett Zamir (https://brett-zamir.me) // example 1: implode(' ', ['Kevin', 'van', 'Zonneveld']) // returns 1: 'Kevin van Zonneveld' // example 2: implode(' ', {first:'Kevin', last: 'van Zonneveld'}) // returns 2: 'Kevin van Zonneveld' let retVal = ''; let tGlue = ''; let actualGlue = ''; let actualPieces; if (providedArgs.length === 1) { const [glueOrPieces] = providedArgs; actualPieces = glueOrPieces; } else { const [glueOrPieces, pieces] = providedArgs; actualGlue = String(glueOrPieces ?? ''); actualPieces = pieces; } if (typeof actualPieces === 'object' && actualPieces !== null) { if (Array.isArray(actualPieces)) { return actualPieces.join(actualGlue); } for (const key in actualPieces) { retVal += tGlue + actualPieces[key]; tGlue = actualGlue; } return retVal; } return String(actualPieces); }