-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
47 lines (40 loc) · 1.62 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function compareTexts() {
const text1 = document.getElementById("text1").value.split("\n");
const text2 = document.getElementById("text2").value.split("\n");
let countMap1 = getCountMap(text1);
let countMap2 = getCountMap(text2);
let resultHTML1 = "";
let resultHTML2 = "";
let uniqueLines = new Set([...text1, ...text2]); // Alle vorkommenden Zeilen
uniqueLines.forEach(line => {
let count1 = countMap1[line] || 0;
let count2 = countMap2[line] || 0;
if (count1 > count2) {
// Linke Seite hat mehr Instanzen als die rechte → Fehlende markieren
for (let i = 0; i < count1 - count2; i++) {
resultHTML1 += `<span class="removed">${line}</span>\n`;
}
}
for (let i = 0; i < Math.min(count1, count2); i++) {
// Gleich viele Instanzen → Normal anzeigen
resultHTML1 += line + "\n";
resultHTML2 += line + "\n";
}
if (count2 > count1) {
// Rechte Seite hat mehr Instanzen als die linke → Hinzugefügte markieren
for (let i = 0; i < count2 - count1; i++) {
resultHTML2 += `<span class="added">${line}</span>\n`;
}
}
});
document.getElementById("result1").innerHTML = resultHTML1;
document.getElementById("result2").innerHTML = resultHTML2;
}
// Erstellt eine Häufigkeitsmap für die Zeilen
function getCountMap(textArray) {
let countMap = {};
textArray.forEach(line => {
countMap[line] = (countMap[line] || 0) + 1;
});
return countMap;
}