По-моему, много более понятен следующий код.
Здесь мы перед добавлением смотрим, является ли слово Word, если да, увеличиваем счетчик. Если он большой (болше или равен 2), то не добавляем, иначе добавляем. Добавляем в конец, ибо работает быстрее. Потом оборачиваем.
this.words.reduceRight((accum, w) => {
acc.count += (current instanceof Word)?1:0;
if(acc.count < 2){
acc.words.push(current);
}
return acc;
}
, {words:[], count:0}).words.reverse();