locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
40 lines (39 loc) • 1.45 kB
JavaScript
;
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);
}