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 Methode codePointAt() von String-Werten gibt eine nicht-negative Ganzzahl zurück, die den Unicode-Codepunkt-Wert des Zeichens darstellt, das an der angegebenen Indexposition beginnt. 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 Zeichens, das zurückgegeben werden soll. Zu einer Ganzzahl umgewandeltundefined wird in 0 umgewandelt.

Rückgabewert

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

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

Beschreibung

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 einem Wert von 065535. 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. Weitere Informationen zu Unicode finden Sie unter UTF-16-Zeichen, Unicode-Codepunkte und Graphemcluster.

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 das Verwenden von String-Indizes für Schleifen dazu führt, dass derselbe Codepunkt zweimal besucht wird (einmal für das führende Surrogat und einmal für das nachfolgende Surrogat), und codePointAt() beim zweiten Mal nur das nachfolgende Surrogat zurückgibt, ist es besser, Schleifen mit Indizes 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'

Stattdessen verwenden Sie eine for...of-Schleife oder spalten Sie den String auf, wodurch der [Symbol.iterator]() des Strings aufgerufen wird, der 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® 2025 Language Specification
# sec-string.prototype.codepointat

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
codePointAt

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch