Skip to content

Instantly share code, notes, and snippets.

@jagomf
Last active August 29, 2015 14:20
Show Gist options
  • Save jagomf/44f1632c534d5279a5cb to your computer and use it in GitHub Desktop.
Save jagomf/44f1632c534d5279a5cb to your computer and use it in GitHub Desktop.
Turns an array of items into a String of items separated by middleJoiner and endJoiner
/*
var fruits = ['apple', 'orange', 'banana', 'pear'],
middleJoiner = ', ',
endJoiner = ' and ',
result = listJoiner(fruits, middleJoiner, endJoiner);
*/
// result will be this string: 'apple, orange, banana and pear'
//Iterative way
function listJoinerIter(elems, middleJoiner, endJoiner) {
var res = '', i;
if(elems.isArray() && elems.length > 0) {
for(i = 0; i < elems.length; i++) {
res += elems[i];
if(i === elems.length - 2) {
res += endJoiner;
} else if(elems.length > 1 && i < elems.length - 1) {
res += middleJoiner;
}
}
}
return res;
}
//Recursvive way
function listJoinerRec(elems, middleJoiner, endJoiner) {
if(elems.length === 0 || !elems.isArray()) {
return '';
} else if(elems.length === 1) {
return elems[0];
} else if(elems.length === 2) {
return elems[0] + endJoiner + elems[1];
} else {
return elems[0] + middleJoiner + listJoiner(elems.shift(), middleJoiner, endJoiner);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment