String.prototype.codePointAt()
The codePointAt() method returns a non-negative integer
that is the Unicode code point value at the given position.
Note that this function does not give the nth code point in a string,
but the code point starting at the specified string index.
Try it
Syntax
js
codePointAt(pos)
Parameters
pos-
Position of an element in
strto return the code point value from.
Return value
A decimal number representing the code point value of the character at the given pos.
- If there is no element at
pos, returnsundefined. - If the element at
posis a UTF-16 high surrogate, returns the code point of the surrogate pair. - If the element at
posis a UTF-16 low surrogate, returns only the low surrogate code point.
Examples
Using 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
Looping with codePointAt()
Because indexing to a pos whose element is a UTF-16 low surrogate, returns only the low surrogate,
it's better not to index directly into a UTF-16 string.
Instead, use a for...of statement
or an Array's forEach() method
(or anything which correctly iterates UTF-16 surrogates) to iterate the string, using codePointAt(0) to get the code point of each element.
js
for (const codePoint of "\ud83d\udc0e\ud83d\udc71\u2764") {
console.log(codePoint.codePointAt(0).toString(16));
}
// '1f40e', '1f471', '2764'
Specifications
| Specification |
|---|
| ECMAScript Language Specification # sec-string.prototype.codepointat |
Browser compatibility
BCD tables only load in the browser