In einer Saite wie "Zhaochucichuzuiduodezifu" möchten wir die Charaktere herausfinden, die am meisten erscheinen. In diesem Artikel werden die Methoden und Ideen im Detail erläutert.
Stellen Sie zunächst zwei Methoden in zwei String -Objekte ein : Indexof () und charat () Methoden
Indexof () Methode führt die Rückgabe des ersten Auftretens eines angegebenen Stringwerts in der Zeichenfolge ein
Charat () -Methode führt das Rückgabecharakter an einer bestimmten Position ein
Führen Sie zunächst einen kleinen Test durch, um zu finden, wo jedes 'I' in der String 'Woainixiaoli' erscheint.
<Script> var arr = 'woainixiaoli'; var index = -1; // Definieren Sie den Variablenindex, um den Indexwert zu steuern // Wenn A nicht gefunden werden kann, dh der Wert von indexof () ist -1, die Schleife endet do {index = arr.indexof ("i", Index + 1); // Verwenden Sie den zweiten Parameterindex+1, um jede Nachsicht zu steuern, wenn die nächste Indexposition des Zeichens A startet, wenn die letzte Suche gefunden wird, wenn (index! // Die Ausgabeposition a}} while (index! = -1); </script>Nachdem der obige Code ausgeführt wurde, gibt die Konsole aus
Gehen Sie zum Thema und finden Sie die meisten Zeichen in der Zeichenfolge 'Zhaochucichuzuiduodezifu' '
Methode 1: Verwenden Sie ein Array (es gibt einen Nachteil. Wenn mehr als ein Zeichen erscheint, kann nur einer gefunden werden).
<Script> var str = "zhaochichuzuuiduodezifu"; var arr = []; // Definieren Sie ein neues Array // Schleife durch die Zeichenfolge für (var i = 0, Länge = str. Length; i <Länge; i ++) {var index = -1; var j = 0; // Jedes Zeichen Find. {j ++;}} while (index! = -1); arr [j] = str [i]; // Die Zeichen in der String -STR mit dem Array arr indexiert als j. Nach mehreren Schleifen tritt eine wiederholte Zuordnung auf. // Die nachfolgende Zuordnung überschreibt die vorherige Zuordnung, aber sie beeinflusst unsere Funde das erste mit den meisten Zeichen} console.log (arr); console.log ("Die meisten Zeichen sind" + arr [arr.Length - 1]); console.log ("Die Anzahl der Zeiten ist" + (arr.Length - 1); </script>;Das Ergebnis des obigen Code, der ausgeführt wird und dann die Konsole ausgibt, ist wie folgt:
Aus dem Ausgabebarray -ARR ist auch ersichtlich, dass diese Methode Zeichen mit der gleichen Häufigkeit überschreibt und nur eine anzeigen kann. Wenn 2 Zeichen mit der gleichen maximalen Anzahl von Male erscheinen, kann diese Methode nur eine erhalten. Basierend darauf finden Sie auf die nächste Methode, um sie mit Objekten zu lösen.
Methode 2: Objekte verwenden (empfohlen)
<Script> var str = "zhaochichuzuuiduodezifu"; var o = {}; für (var i = 0, Länge = st.Length; i <Länge; i ++) {// var char = str [i]; var char = str.charat (i); if (o [char]) {// char. o [char] ++; // 1} else {o [char] = 1; // Wenn das erste Ereignis die Anzahl der Vorkommen als 1}} console.log (o) markiert ist; // Die Ausgabe ist ein vollständiges Objekt, das jedes Zeichen und seine Vorkommenszahl aufzeichnet // durch das Objekt reist und die Zeichen mit den meisten Vorkommen und der Anzahl der Vorkommen var max = 0; var maxchar = null; für (var key in o) {if (max <o [Schlüssel]) {max = o [Schlüssel] findet. // der Maxchar mit der größten Anzahl von Vorkommen maxchar = key; // Das entsprechende Zeichen ist der aktuelle Schlüssel}} console.log ("Die meisten Vorkommen sind" + maxchar); console.log ("Die Anzahl der Vorkommen ist" + max); </script>Das Ergebnis des obigen Code, der ausgeführt wird und dann die Konsole ausgibt, ist wie folgt:
Diese Methode löst das Problem der ersten Methode und wir können die Anzahl der Vorkommen jedes Zeichens deutlich aufzeichnen. Wenn es zwei Zeichen mit der gleichen Häufigkeit gibt, können sie im Objekt deutlich gesehen werden.
Es gibt jedoch immer noch Mängel. Sie können die Zeichen nicht direkt mit der höchsten Häufigkeit gleichzeitig ausgeben. Dies erfordert zusätzliche Beurteilungsbedingungen. Der perfekte Code lautet wie folgt o (∩__∩) o
<Script> var str = "nininihaoa"; var o = {}; für (var i = 0, länge = str.length; i <length; i ++) {var char = str.charat (i); if (o [char]) {o [char] ++; // 1} else {o [char] = 1; // Wenn das erste Ereignis aufgezeichnet wird, wird die Anzahl der Male als 1}} console.log (o) aufgezeichnet; // Die Ausgabe ist ein vollständiges Objekt, das jedes Zeichen und seine Vorkommenszahl aufzeichnet // Durch das Objekt reisen und das Zeichen mit den meisten Vorkommen var max = 0; für (var key in o) {if (max <o [Schlüssel]) {max = o [Schlüssel] findet; // die mit der größten Anzahl von maximalen, die immer gespeichert sind}} für (var key in o) {if (o [key] == max) {//console.log(Key);consoleDie Ergebnisse sind wie folgt:
Das obige ist der Charakter, den der Editor Ihnen vorstellt, dass die häufigsten Zeichen in der JS -Zeichenfolge erscheinen. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!