Serialize Lists
Serialize a list of an unknown number of items into proper English.
by nate
JavaScript
var $body = $('body'),
list1 = ['alpha'],
list2 = ['alpha', 'beta'],
list3 = ['alpha', 'beta', 'gamma'];
function serialize(list) {
var length = list.length,
lastIndex = length - 1,
serializedList = '';
list.forEach(function (item, i) {
serializedList += item;
if (i < lastIndex) {
if (length > 2) {
// We support the Oxford comma
serializedList += ', ';
if (i === lastIndex - 1) {
serializedList += 'and ';
}
} else {
serializedList += ' and ';
}
}
});
return serializedList;
};
$('<p>').text(serialize(list1)).appendTo($('body'));
$('<p>').text(serialize(list2)).appendTo($('body'));
$('<p>').text(serialize(list3)).appendTo($('body'));