String.prototype.codePointAt()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.

Die codePointAt() Methode von String Werten gibt eine nicht-negative Ganzzahl zurück, die den Unicode-Codepunkt-Wert des Zeichens an der angegebenen Indexposition darstellt. Beachten Sie, dass der Index weiterhin auf UTF-16 Code-Einheiten basiert, nicht auf Unicode-Codepunkten.

Probieren Sie es aus

const icons = "☃★♲";

console.log(icons.codePointAt(1));
// Expected output: "9733"

Syntax

js
codePointAt(index)

Parameter

index

Nullbasierter Index des zurückzugebenden Zeichens. In eine Ganzzahl umgewandeltundefined wird in 0 umgewandelt.

Rückgabewert

Eine nicht-negative Ganzzahl, die den Codepunkt-Wert des Zeichens am angegebenen index darstellt.

  • Wenn index außerhalb des Bereichs von 0str.length - 1 liegt, gibt codePointAt() undefined zurück.
  • Wenn das Element an index ein UTF-16 führendes Surrogat ist, gibt es den Codepunkt des Surrogat-Paares zurück.
  • Wenn das Element an index ein UTF-16 nachfolgendes Surrogat ist, gibt es nur die Surrogat-Code-Einheit zurück.

Beschreibung

Zeichen in einem String werden 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 jedes String-Index eine Code-Einheit mit einem Wert von 065535. Höhere Codepunkte werden durch ein Paar von 16-Bit-Surrogat-Pseudozahlen dargestellt. Daher gibt codePointAt() einen Codepunkt zurück, der sich über zwei String-Indizes erstrecken kann. Weitere Informationen zu Unicode finden Sie unter UTF-16 Zeichen, Unicode-Codepunkte und Graphem-Cluster.

Beispiele

Verwendung von codePointAt()

js
"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 das zweite Mal codePointAt() nur das nachfolgende Surrogat zurückgibt, ist es besser, Schleifen nach Index zu vermeiden.

js
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 Schleife oder spreaden Sie den String, die beide den [Symbol.iterator]() des Strings aufrufen, welcher nach Codepunkten iteriert. Verwenden Sie dann codePointAt(0), um den Codepunkt jedes Elements zu erhalten.

js
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

Specification
ECMAScript® 2026 Language Specification
# sec-string.prototype.codepointat

Browser-Kompatibilität

Siehe auch