transliteriert kyrillisch nach Latein mit JavaScript-Funktion

8

Ich habe diese Funktion gemacht:

%Vor%

Nun sollte es kyrillischen Text ins Lateinische transkribieren und das Latein einfach passieren lassen. Aber es gelingt erst später, das erste zu transkribieren, und im Falle des Lateinischen gibt es undefiniert als Antwort. Könnte mir jemand eine Idee geben, was mache ich falsch?

    
kyng 09.07.2012, 22:21
quelle

6 Antworten

39

Ein paar Dinge ...

  1. Verwenden Sie undefined statt 'undefined'
  2. Versetzen Sie die Rückgabe nicht in die Schleife
  3. Verwenden Sie hasOwnProperty, um Funktionen und Eigenschaften des Prototyps
  4. herauszufiltern
  5. Verwenden Sie [] anstelle von new Array ()
  6. Verwenden Sie ein {} anstelle von einem []
  7. Verwenden Sie Kleinbuchstaben anstelle von Großbuchstaben. Großbuchstaben sind für Konstruktoren reserviert

Hier ist der Code

%Vor%

Funktionaler ist so ...

%Vor%     
Split Your Infinity 09.07.2012, 22:28
quelle
3

Verwenden Sie kein Array für diese Aufgabe. Verwenden Sie nicht for in , um eine Zeichenfolge zu wiederholen. Überprüfen Sie nicht gegen die Zeichenfolge "undefined" . Nicht return in der for Schleife.

%Vor%

Hier ist eine Demonstration von jsFiddle.

    
user1479055 09.07.2012 22:27
quelle
3

In meinen Projekten verwende ich diese Methode der Transliteration:

%Vor%

Führen Sie dieses Beispiel durch, um zu transkribieren:

%Vor%

Ich habe alle russischen Buchstaben durch ihre Unicode-Analoga ersetzt (jeder Buchstabe beginnt mit \ u), um Probleme mit der Kodierung in der Javascript-Datei zu lösen.

Um die Ausführungsgeschwindigkeit zu überprüfen, habe ich die beste Antwort auf diese Frage genommen und sie mit meinem Beispiel verglichen. Meine Methode schien mehrmals schneller zu sein (0.16 ms in Firebug :-).

    
Ali Mamedov 30.03.2016 13:22
quelle
2

Ihr Hauptproblem ist, dass return an der falschen Stelle ist. Es ist innerhalb Ihrer Schleife, so dass es bei der ersten Iteration zurückkehrt. Ändere es zu:

%Vor%

Beachten Sie, dass ich die Einrückung korrigiert habe. Eine konsistente Einrückung hilft Ihnen, diese Art von Fehlern zu vermeiden.

Hinweis 1: Es gibt nichts für Ihr A -Objekt, das die Tatsache verwendet, dass es ein Array ist. Sie verwenden es nur als Karte. In JavaScript sind alle Objekte Maps, also verwenden Sie% A = new Array(); nicht A = {}; .

Hinweis 2: A und i werden niemals in deiner Funktion deklariert, so dass du Opfer von Der Horror impliziter Globals . Um es zu beheben, deklariere sie mit var .

Hinweis 3: Die Verwendung von for..in zum Durchlaufen der Zeichen einer Zeichenfolge oder die Verwendung von [] zum Indizieren in die Zeichenfolge ist in JavaScript-Engines nicht zuverlässig. Verwenden Sie stattdessen for (i = 0; i < word.length; ++i) und dann ch = word.charAt(i); , um das Zeichen an dieser Position abzurufen, und verwenden Sie dann ch in Ihrem Code innerhalb der Schleife.

Hinweis 4: Sie können den Seltsam mächtigen || operator , um Ihren Code zu verkürzen, zB:

%Vor%     
T.J. Crowder 09.07.2012 22:26
quelle
1

Russische Symbole in js funktionieren überhaupt nicht in meinem System. Ich weiß nicht warum. Also benutze ich den nächsten Code dafür:

Es wird nicht nur transkribiert, sondern alle Interpunktion durch "_" und Kleinbuchstaben ersetzt.

%Vor% %Vor%

Der Code wurde ursprünglich hier verwendet: Ссылка und dann refaktoriert.

    
kinORnirvana 24.05.2015 21:26
quelle
0

Durch die Kombination von Empfehlungen von Bart Riemens und T.J. Crowder Ich habe diesen Code entwickelt, der es nett macht:

%Vor%

Als Sie!

    
kyng 10.07.2012 07:33
quelle

Tags und Links