Другой подход, который так же работает не корректно:
var text2 = "мама мыла раму долго";
var text1 = "мама мыла кривую раму";
var result = [];
var a1 = text1.split(' ');
var a2 = text2.split(' ');
var changes = false;
for (var i = 0; i < Math.min(a1.length,a2.length); i++) {
var text = a1[i];
if (!a2[i] || text != a2[i]) {
if (!changes) {
changes = true;
result.push('<span class="changedText">');
}
} else {
if (changes) {
changes = false;
result.push('</span>');
}
}
result.push(text);
}
if (changes) result.push("</span>");
alert(result.join(' '));
Если добавляем слово в начало 0 он считает измененным весь текст.