Guten Tag, bin neu hier und hab da eine Verständnisfrage zu einem Anagram Script.
Ich bin noch relativ frisch in javascript unterwegs und dabei es zu lernen. Nun hatte ich die Aufgabe gefunden 2 Strings auf ein Anagram zu prüfen und habe beim googeln nach möglichen Herangehensweisen einige Lösungen gefunden, welche ich zum großen Teil auch weitestgehend nachvollziehen konnte aber aus dieser einen Lösung werde ich einfach nicht schlau. Ich versuche wirklich zu verstehen warum das Script so funktioniert wie es funktioniert aber ich steige einfach nicht dahinter. Ich hoffe mir kann das jemand Anfängerfreundlich erklären, wäre sehr nett
Um folgendes Script geht es:
Dem part hier kann ich - glaube ich zumindest - noch soweit folgen.
Ich lege eine Funktion mit 2 Werten an und prüfe ob die Zeichenlänge beider Strings unterschiedlich ist. Ist die Zeichenlänge unterschiedlich liegt kein Anagram vor also ist das Ergebnis falsch.
Anschließend lege ich ein leeres Objekt an.. soweit so gut...
Danach bin ich raus und kann nicht wirklich folgen.
Wie kommen die einzelnen Buchstaben in das Objekt?
Ich kann soweit folgen das die Anzahl der verschiedenen Buchstaben im 1. String gezählt werden und anschließend jeder Buchstabe der auch im 2. String vorhanden ist wieder subtrahiert wird aber wie gesagt versteh ich schon nicht wo überhaupt die Buchstaben herkommen. Zum anderen versteh ich nicht was das || 0 (oder 0) da genau macht, ich weiß nur das es ohne nicht funktioniert. (Würde sich aber sicher Aufklären wenn ich dem Part davor folgen könnte.
Im letzten Part wird wenn ich es richtig verstanden habe (let k in count) überprüft ob ein Zeichen übrig also nicht 0 ist und die 2 Strings daher kein Anagram sind und deswegen wird Falsch zurückgegeben (Aber auch hier kann ich nicht folgen warum k in dem Fall weiß das es a, b, c etc. ist).
Ich hoffe jemand erbarmt sich und erleuchtet mich. Über nützliche Links evtl. mit Übungsaufgaben etc. wäre ich auch sehr dankbar
Ich bin noch relativ frisch in javascript unterwegs und dabei es zu lernen. Nun hatte ich die Aufgabe gefunden 2 Strings auf ein Anagram zu prüfen und habe beim googeln nach möglichen Herangehensweisen einige Lösungen gefunden, welche ich zum großen Teil auch weitestgehend nachvollziehen konnte aber aus dieser einen Lösung werde ich einfach nicht schlau. Ich versuche wirklich zu verstehen warum das Script so funktioniert wie es funktioniert aber ich steige einfach nicht dahinter. Ich hoffe mir kann das jemand Anfängerfreundlich erklären, wäre sehr nett
Um folgendes Script geht es:
Code:
function Anagrams(str1, str2) {
if (str1.length !== str2.length)
return false;
let count = {};
for (let i in str1) {
count[str1[i]] = (count[str1[i]] || 0) + 1;
count[str2[i]] = (count[str2[i]] || 0) - 1;
}
for (let k in count) {
if (count[k] !== 0)
return false;
}
return true;
}
console.log(Anagrams('abc','abc'))//true
console.log(Anagrams('baaa','bbaa'))//false
console.log(Anagrams('banana','bananas'))//false
Dem part hier kann ich - glaube ich zumindest - noch soweit folgen.
Code:
function Anagrams(str1, str2) {
if (str1.length !== str2.length)
return false;
let count = {};
Ich lege eine Funktion mit 2 Werten an und prüfe ob die Zeichenlänge beider Strings unterschiedlich ist. Ist die Zeichenlänge unterschiedlich liegt kein Anagram vor also ist das Ergebnis falsch.
Anschließend lege ich ein leeres Objekt an.. soweit so gut...
Danach bin ich raus und kann nicht wirklich folgen.
Wie kommen die einzelnen Buchstaben in das Objekt?
Ich kann soweit folgen das die Anzahl der verschiedenen Buchstaben im 1. String gezählt werden und anschließend jeder Buchstabe der auch im 2. String vorhanden ist wieder subtrahiert wird aber wie gesagt versteh ich schon nicht wo überhaupt die Buchstaben herkommen. Zum anderen versteh ich nicht was das || 0 (oder 0) da genau macht, ich weiß nur das es ohne nicht funktioniert. (Würde sich aber sicher Aufklären wenn ich dem Part davor folgen könnte.
Im letzten Part wird wenn ich es richtig verstanden habe (let k in count) überprüft ob ein Zeichen übrig also nicht 0 ist und die 2 Strings daher kein Anagram sind und deswegen wird Falsch zurückgegeben (Aber auch hier kann ich nicht folgen warum k in dem Fall weiß das es a, b, c etc. ist).
Ich hoffe jemand erbarmt sich und erleuchtet mich. Über nützliche Links evtl. mit Übungsaufgaben etc. wäre ich auch sehr dankbar