Solution to 99 lisp problems: P08 with functional javascript
I don't think you need so much complexity in javascript. It's not a fully functional language, don't try to make it so.

var arr = [
    'a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'a', 'e', 'e', 'e'
];

arr = arr.filter( function( el, i ) {
    // return if the current isn't the same as the next
    return el !== arr[ i + 1 ];
});

console.log( arr ); // ["a", "b", "c", "d", "a", "e"]


This is 2 lines.