var text1 = "Мама мыла очень кривую раму";
var text2 = "Мама долго мыла кривую раму";
var arr1 = text1.split(' ');
var arr2 = text2.split(' ');
var result1 = [], result2 = [];
for (var i = 0; i < arr1.length; i++) {
if (arr2[i] == undefined) {
for (var j = i; j < arr1.length; j++) {
arr1[j] = "<span class='changedText'>" + arr1[j] + "</span>";
}
break;
}
if (arr1[i] != arr2[i]) {
if (findInArray(arr1[i], arr2)) {
arr1.splice(i, 0, arr1[i]);
arr2[i] = "<span class='changedText'>" + arr2[i] + "</span>";
if (result1[result1.length - 1] != arr1[i])
result1.push(arr1[i]);
result2.push(arr2[i]);
} else {
arr2.splice(i, 0, arr2[i]);
arr1[i] = "<span class='changedText'>" + arr1[i] + "</span>";
result1.push(arr1[i]);
}
} else {
if (result1[result1.length - 1] != arr1[i])
result1.push(arr1[i]);
result2.push(arr2[i]);
}
}
function findInArray (element, array) {
var find = false;
for (var i = 0; i < array.length; i++) {
if (array[i] == element)
find = true;
}
return find;
}
alert(result1.join(' '));
alert(result2.join(' '));
Вроде работает, но есть косяки:
Не придумал что делать если новый текст длиннее исходного (я пробегаюсь только по исходному массиву).
keen,
Как Вы и говорили косяки со знаками препинания. Вроде это можно сделать регулярными выражениями, но в них я не силен, как бы мне выделить в отдельные элементы массива знаки препинания так, чтобы потом оно нормально склеилось в строку и не потерять при этом знаки?
И ещё, мой алгоритм не выводит в первом массиве 2 одинаковых слова