Baseline Widely available
Die codePointAt()
-Methode von String
Werten gibt eine nicht negative Ganzzahl zurück, die der Unicode-Codepunktwert des Zeichens ist, das an dem angegebenen Index beginnt. Beachten Sie, dass der Index immer noch auf UTF-16-Codeeinheiten basiert, nicht auf Unicode-Codepunkten.
const icons = "ââ
â²";
console.log(icons.codePointAt(1));
// Expected output: "9733"
Syntax Parameter
index
Nullbasierter Index des zurückzugebenden Zeichens. In eine Ganzzahl konvertiert â undefined
wird in 0 konvertiert.
Eine nicht negative Ganzzahl, die den Codepunktwert des Zeichens an der angegebenen index
repräsentiert.
index
auÃerhalb des Bereichs von 0
â str.length - 1
liegt, gibt codePointAt()
undefined
zurück.index
ein UTF-16 führendes Surrogat ist, gibt es den Codepunkt des Surrogatpaars zurück.index
ein UTF-16 nachfolgendes Surrogat ist, gibt es nur die nachfolgende Surrogat-Codeeinheit zurück.Zeichen in einem String sind von links nach rechts indiziert. Der Index des ersten Zeichens ist 0
, und der Index des letzten Zeichens in einem String namens str
ist str.length - 1
.
Unicode-Codepunkte reichen von 0
bis 1114111
(0x10FFFF
). In UTF-16 ist jeder String-Index eine Codeeinheit mit dem Wert 0
â 65535
. Höhere Codepunkte werden durch ein Paar von 16-Bit-Surrogat-Pseudo-Zeichen dargestellt. Daher gibt codePointAt()
einen Codepunkt zurück, der sich möglicherweise über zwei String-Indizes erstreckt. Für Informationen zu Unicode, siehe UTF-16-Zeichen, Unicode-Codepunkte und Grapheme-Cluster.
"ABC".codePointAt(0); // 65
"ABC".codePointAt(0).toString(16); // 41
"ð".codePointAt(0); // 128525
"\ud83d\ude0d".codePointAt(0); // 128525
"\ud83d\ude0d".codePointAt(0).toString(16); // 1f60d
"ð".codePointAt(1); // 56845
"\ud83d\ude0d".codePointAt(1); // 56845
"\ud83d\ude0d".codePointAt(1).toString(16); // de0d
"ABC".codePointAt(42); // undefined
Schleifen mit codePointAt()
Da die Verwendung von String-Indizes für Schleifen dazu führt, dass derselbe Codepunkt zweimal besucht wird (einmal für das führende Surrogat, einmal für das nachfolgende Surrogat), und beim zweiten Mal gibt codePointAt()
nur das nachfolgende Surrogat zurück, ist es besser, Schleifen nach Index zu vermeiden.
const str = "\ud83d\udc0e\ud83d\udc71\u2764";
for (let i = 0; i < str.length; i++) {
console.log(str.codePointAt(i).toString(16));
}
// '1f40e', 'dc0e', '1f471', 'dc71', '2764'
Verwenden Sie stattdessen eine for...of
-Anweisung oder spreaden Sie den String, die beide den String's [Symbol.iterator]()
aufrufen, der nach Codepunkten iteriert. Verwenden Sie dann codePointAt(0)
, um den Codepunkt jedes Elements zu erhalten.
for (const codePoint of str) {
console.log(codePoint.codePointAt(0).toString(16));
}
// '1f40e', '1f471', '2764'
[...str].map((cp) => cp.codePointAt(0).toString(16));
// ['1f40e', '1f471', '2764']
Spezifikationen Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4