Ich hab's nicht runtergewertet, aber beim ersten Blick drauf kommt mir die Methode recht umständlich vor. Beim zweiten Blick dagegen... "Vor dem letzten Element den Kleber weglassen" ist knifflig, die join-Methode ist darauf nicht ausgelegt. Es braucht also noch etwas Trixerei.
var original = "ghastly user hashimoto hastes to tell us that he has two dogs";
var parts = original.split('has');
// Ergibt ['g', 'tly user ', 'himoto ', 'tes to tell us that he ', ' two dogs']
var lastpart = parts.pop();
var result = parts.join('has') + lastpart;
// --> "ghastly user hashimoto hastes to tell us that he two dogs"
Tatsächlich, sieht gar nicht so wüst aus - aber ein split+join ist vom Gefühl her aufwändiger als ein lastIndexOf und etwas substr-Gebastel.
Abgesehen davon müsste uns der OP noch sagen, ob diese Logik (ob nun mit split/pop/join oder mit lastIndexOf+substr) hinreichend ist oder ob noch eine Doppelleerzeichensanierung nötig ist.
Rolf