I needed this too, and I wanted it to be robust and as international-friendly as possible. I used regex and character classes to get the characters I want and array ops to split/join it together:
export function camelize(s) {
const sa = s
.replace(/[^\w\d\s]/g, '')
.toLowerCase()
.split(/\s+/);
return sa
.filter(v => !!v)
.map((w, i) => (i > 0 ? w[0].toUpperCase() + w.substr(1) : w))
.join('');
}
Enjoy!