Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS метод String.codePointAt()

Загальний опис

Метод String.prototype.codePointAt() дозволяє отримати кодову точку Unicode для символу, що знаходиться на вказаному індексі рядка. Відмінність між codePointAt() та його попередником charCodeAt() полягає в тому, що перший підтримує повний набір Unicode, включаючи символи, які можуть бути представлені за допомогою двох "одиниць коду" (surrogate pairs), як-от емодзі або певні ієрогліфи. Таким чином, codePointAt() є незамінним при роботі з текстами, що містять такі символи, забезпечуючи більш точну і вичерпну обробку рядків.

Для отримання кодової точки використовуйте codePointAt(), передавши йому індекс символу у рядку. Якщо індекс вказує на першу одиницю коду сурогатної пари, метод повертає кодову точку для цілого символу. Якщо індекс вказує на другу одиницю коду або якщо символ не є частиною сурогатної пари, метод повертає кодову точку так само, як charCodeAt().

Ось приклад простого використання:

let greeting = "Привіт 👋";
let codePoint = greeting.codePointAt(7);
console.log(codePoint); // Виведе 128075, що є кодовою точкою для символу 👋

У цьому випадку, codePointAt() повертає кодову точку для емодзі, що знаходиться на індексі 7.

Якщо потрібно перебрати рядок та отримати всі кодові точки, можна використати цикл for...of, який коректно обробляє сурогатні пари:

for (let char of greeting) {
  console.log(char + " має кодову точку " + char.codePointAt(0));
}

Один з важливих моментів при роботі з codePointAt() полягає в тому, що результат може виходити за межі 16-бітового діапазону (0x0000 до 0xFFFF), який використовується в charCodeAt(). Це означає, що при роботі з символами, які мають коди вище 0xFFFF, необхідно використовувати саме codePointAt() для їх коректного виявлення та обробки. Таке розширення важливе для розробників, котрі бажають забезпечити міжнародну підтримку та обробку всіх можливих символів Unicode у своїх додатках і веб-сайтах.

Порада:

При роботі з рядками, що містять символи, які можуть бути представлені двома кодовими одиницями (так звані "сурогатні пари"), важливо використовувати метод codePointAt() замість charCodeAt(), оскільки він правильно повертає кодову точку символу, що дозволяє уникнути помилок при інтерпретації символів за межами базової багатомовної площини Unicode.

let symbol = '𝟘'; // цей символ складається з сурогатної пари
console.log(symbol.charCodeAt(0)); // некоректний результат
console.log(symbol.codePointAt(0)); // коректний результат
Порада:

Якщо ви хочете перебрати всі символи рядка та працювати з їх Unicode кодами, пам'ятайте, що метод codePointAt() поверне undefined, якщо індекс за межами рядка, тому завжди перевіряйте діапазон індексів.

let word = 'Hello';
for (let i = 0; i < word.length; i++) {
  let code = word.codePointAt(i);
  if (code !== undefined) {
    console.log(`Code point at index ${i}: ${code}`);
  }
}
Порада:

Коли ви розробляєте функціонал, що потребує перетворення символів рядка в їхні Unicode коди, використовуйте codePointAt() для отримання цілісного представлення символів. Це особливо корисно, коли вам потрібно підтримувати емодзі або спеціальні писемні системи, як-от ієрогліфи.

Порада:

При створенні системи шифрування або інших алгоритмів, де вам потрібно конвертувати символи у коди та навпаки, використовуйте метод codePointAt() разом з String.fromCodePoint() для зворотнього перетворення. Це дозволяє забезпечити точність при роботі з будь-якими символами Unicode.

let char = 'A';
let code = char.codePointAt(0);
let decodedChar = String.fromCodePoint(code);
console.log(decodedChar); // "A"

Синтаксис

codePointAt(index)

Параметри

*index

Індекс на основі нуля, який вказує на символ у рядку, для якого потрібно повернути кодову точку. Якщо аргумент не вказаний або undefined, він конвертується у 0.

Return

integer

Повертає невід'ємне ціле число, що представляє кодову точку символу за зазначеним індексом. Якщо індекс виходить за межі від 0 до str.length - 1, метод codePointAt() повертає undefined. У випадку, коли символ за зазначеним індексом є провідним сурогатом у кодуванні UTF-16, метод повертає кодову точку відповідної пари сурогатів. Якщо ж елемент є заключним сурогатом, метод повертає лише кодову одиницю цього сурогата.

Переглядачі

Переглядач

41

29

9

28

12

Переглядач

41

41

29

9

Переглядач

4.0.0

1.0

Приклади


У цьому прикладі користувачі зможуть ввести символ або рядок та побачити його Unicode кодову точку.

У цьому прикладі використовується метод codePointAt() для отримання кодової точки першого символу рядка. Кодова точка представляє собою числове значення юнікоду конкретного символу.

// Рядок, який містить символ 'A'
let text = 'Aloha!';

// Отримання кодової точки для першого символу
let codePoint = text.codePointAt(0);

console.log(codePoint); // Виведе 65, оскільки 65 є кодом 'A' в юнікоді

У цьому прикладі ми використовуємо codePointAt() для перевірки, чи є символ, що стоїть на певному індексі в рядку, сурогатною парою. Сурогатні пари використовуються в юнікоді для кодування символів, які не поміщаються в стандартний 16-бітний розмір. Це часто стосується емодзі та інших нестандартних символів.

// Рядок з емодзі, який представляється сурогатною парою
let text = '👍';

// Отримання кодової точки символу
let codePoint = text.codePointAt(0);

// Перевірка, чи перевищує кодова точка значення 0xFFFF (максимум для стандартних символів)
if (codePoint > 0xFFFF) {
  console.log('Цей символ є сурогатною парою.');
  console.log(`Його кодова точка: ${codePoint}.`); // Виведе кодову точку емодзі
} else {
  console.log('Цей символ не є сурогатною парою.');
}