Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

String : méthode codePointAt()

Baseline
Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2015.

La méthode codePointAt() des valeurs String retourne un entier positif qui est la valeur du point de code Unicode du caractère commençant à l'indice donné. Notez que l'indice est toujours basé sur les unités de code UTF-16, et non sur les points de code Unicode.

Exemple interactif

const icons = "☃★♲";

console.log(icons.codePointAt(1));
// Résultat attendu : "9733"

Syntaxe

js
codePointAt(index)

Paramètres

index

Un indice à partir de zéro du caractère à retourner. Converti en entier — undefined est converti en 0.

Valeur de retour

Un entier qui n'est pas négatif représentant la valeur du point de code du caractère à un index donné.

  • Si index est en dehors de la plage de 0 à str.length - 1, codePointAt() retourne undefined.
  • Si l'élément à index est un substitut principal UTF-16, retourne le point de code du paire de substituts.
  • Si l'élément à index est un substitut secondaire UTF-16, retourne seulement l'unité de code du substitut secondaire.

Description

Les caractères dans une chaîne de caractères sont indexés de gauche à droite. L'indice du premier caractère est 0, et l'indice du dernier caractère d'une chaîne de caractères appelée str est str.length - 1.

Les points de code Unicode vont de 0 à 1114111 (0x10FFFF). En UTF-16, chaque indice de chaîne est une unité de code avec une valeur comprise entre 0 et 65535. Les points de code plus élevés sont représentés par une paire de pseudo-caractères substituts de 16 bits. Par conséquent, codePointAt() retourne un point de code qui peut s'étendre sur deux indices de chaîne de caractères. Pour plus d'informations sur Unicode, voir Caractères UTF-16, points de code Unicode et grappes de graphèmes.

Exemples

Utiliser la méthode 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

Boucler avec codePointAt()

Comme l'utilisation des indices de chaîne de caractères pour boucler fait que le même point de code est visité deux fois (une fois pour le substitut principal, une fois pour le substitut secondaire), et que la deuxième fois codePointAt() ne retourne que le substitut secondaire, il est préférable d'éviter de boucler par indice.

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'

Au lieu de cela, utilisez une instruction for...of ou étalez la chaîne de caractères, qui invoquent toutes deux le [Symbol.iterator]() de la chaîne de caractères, qui itère par points de code. Ensuite, utilisez codePointAt(0) pour obtenir le point de code de chaque élément.

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']

Spécifications

Spécification
ECMAScript® 2027 Language Specification
# sec-string.prototype.codepointat

Compatibilité des navigateurs

Voir aussi