2017-10-02 2 views
-2

Ich versuche, Zahlen (1, 2, 3 ...) in chinesische Schriftzeichen umzuwandeln (一, 二/两, 三 ...). Auf Chinesisch sind Zahlen geschrieben [Hunderte] [100] [Zehn] [10] [Einsen]. Zum Beispiel würde 243 als 2 [100] 4 [10] 3 oder 三百 四十 written geschrieben werden. Gibt es eine Möglichkeit, dies effizient zu tun, oder muss ich eine Funktion erstellen, die jede Zahl durchläuft und sie nach Array übersetzt?Javascript - Konvertieren von arabischen Ziffern in chinesische Schriftzeichen

Danke!

Antwort

1

Sie benötigen nur zwei Arrays, eines für Namen jeder Ziffer und ein anderes für Namen von Positionen von Ziffern in einer Zahl. So etwas wie

var digits = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine' ] 
var positions = [ 'ones', 'tens', 'hundreds' ]; 

toWords = num => String(243).split('').reduce((acc, curr, index) => { 
    console.log(parseInt(curr)) 
    acc += digits[parseInt(curr)] + positions.reverse()[index] 
    return acc 
    }, "") 
console.log(toWords(243)) 

Wenn Sie die englischen Worte wie chinesische Schriftzeichen haben, würden Sie das gewünschte Ergebnis

+0

Dank aussehen bekommen für Ihre Antworten. Ich weiß grundsätzlich nichts über Pfeilfunktionen, also könntest du mich bitte durch all das führen! Danke – Orion31

+0

Im Grunde werfen wir die Zahl in einen String und teilen ihn dann in ein Array von Ziffern wie '['2', '4', '3']'. Nimm dann jede Ziffer und suche nach dem Array der Ziffern . Wirf die Zeichenfolge '2' in eine Ganzzahl, sodass wir sie als Array-Index in der Suche verwenden können, sodass 2 mit 'zwei' übereinstimmt. Die Position von 2 in der Zahl 243 ist hunderte, aber der Index von array reduce ist 0, also kehren wir das Array von Positionen um und rufen das Element am Index ab. – kharhys

+0

Vielen Dank! Ich verstehe endlich diese verdammten Pfeile! – Orion31

1

Sie können in Number.prototype.toLocaleString Using locales

console.log(123456.789.toLocaleString('zh-u-nu-hanidec')) // "一二三,四五六.七八九" 
 

 
console.log(123456.789.toLocaleString('zh-u-nu-FullWide')) // "123,456.789"

Verwandte Themen