Использование регулярного выражения может быть хорошим вариантом:
var words = ['bon', 'mad'];
'joe bon joe mad'.replace(new RegExp('(' + words.join('|') + ')', 'g'), '');
// 'joe joe '
Регулярное выражение 1 не очень сложно с такими вещами, как упреждающий просмотр, и механизм регулярных выражений написан на C / C ++, поэтому можно ожидать, что он будет довольно быстрым. Тем не менее - проведите тестирование и посмотрите, соответствует ли производительность вашим потребностям.
Я не думаю, что реализация вашего собственного парсера будет быстрее, но я могу ошибаться - эталонный тест.
Отправка документа на сервер звучит не очень хорошо для меня. Имея 100 тыс. Слов, вы смотрите на полезную нагрузку в диапазоне мегабайт, и вам все равно придется что-то делать с ней на сервере и отодвигать ее назад.
1 Возможно, вам придется настроить регулярное выражение, чтобы что-то сделать с пробелами.