-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
translation(js): Web/JavaScript/Reference/Global_Objects/String/index…
…Of (#204) * translation(js): Web/JavaScript/Reference/Global_Objects/String/indexOf * Apply suggestions from code review Co-authored-by: Vitalii Perehonchuk <[email protected]> Co-authored-by: Vitalii Perehonchuk <[email protected]>
- Loading branch information
1 parent
f56ce79
commit f6ee605
Showing
1 changed file
with
159 additions
and
0 deletions.
There are no files selected for viewing
159 changes: 159 additions & 0 deletions
159
files/uk/web/javascript/reference/global_objects/string/indexof/index.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
--- | ||
title: String.prototype.indexOf() | ||
slug: Web/JavaScript/Reference/Global_Objects/String/indexOf | ||
tags: | ||
- JavaScript | ||
- Method | ||
- Prototype | ||
- Reference | ||
- String | ||
browser-compat: javascript.builtins.String.indexOf | ||
--- | ||
{{JSRef}} | ||
|
||
Метод **`indexOf()`** повертає індекс першого збігу з шуканим значенням всередині об'єкта {{jsxref("String")}}, на якому цей метод було викликано. Пошук починається з позиції, переданої в параметрі `fromIndex`. Повертає `-1`, якщо шукане значення не знайшлося. | ||
|
||
{{EmbedInteractiveExample("pages/js/string-indexof.html")}} | ||
|
||
> **Примітка:** Інформація про однойменний метод масиву знаходиться за посиланням {{jsxref("Array.prototype.indexOf()")}}. | ||
## Синтаксис | ||
|
||
```js | ||
indexOf(searchValue) | ||
indexOf(searchValue, fromIndex) | ||
``` | ||
|
||
### Параметри | ||
|
||
- `searchValue` | ||
|
||
- : Шукане рядкове значення. | ||
|
||
Якщо явно не було передано ніякого рядка, [_searchValue_ буде зведено до значення "`undefined`" (англ.)](https://tc39.github.io/ecma262/#sec-tostring), що буде шуканим в рядку `str`. | ||
|
||
Таким чином, вираз `'undefined'.indexOf()` поверне `0`, оскільки `undefined` справді знаходиться в рядку `undefined` на позиції `0`. Однак, `'undefine'.indexOf()` поверне `-1`, адже `undefined` не можна знайти в рядку `undefine`. | ||
|
||
- _`fromIndex`_ {{optional_inline}} | ||
|
||
- : Ціле число, яке позначає індекс символу, з якого почнеться пошук. Усталено дорівнює `0`. | ||
|
||
Для значень _`fromIndex`_, менших за `0`, або більших за `str.length`, пошук починається за індексом `0` та рівним `str.length` відповідно. | ||
|
||
Наприклад, `'привіт, світе'.indexOf('і', -5)` поверне `4`, оскільки фактично пошук починається з позиції `0`, а `і` знаходиться на позиції `4`. З іншого боку, `'привіт, світе'.indexOf('і', 13)` (та й узагалі з будь-яким значенням `fromIndex`, більшим за `13`) поверне `-1`, адже пошук починається з позиції `13`, тобто з позиції _після_ кінця рядка. | ||
|
||
### Повернене значення | ||
|
||
Індекс першої появи значення `searchValue` у рядку, або **`-1`**, якщо шукане значення не знайшлось. | ||
|
||
Порожній рядок, переданий аргументом `searchValue`, видає дивні результати. Без вказаного `fromIndex`, або з будь-яким значенням `fromIndex`, меншим за довжину рядка, повернене значення буде таким самим, як і значення `fromIndex`: | ||
|
||
```js | ||
'привіт, світе'.indexOf('') // повертає 0 | ||
'привіт, світе'.indexOf('', 0) // повертає 0 | ||
'привіт, світе'.indexOf('', 3) // повертає 3 | ||
'привіт, світе'.indexOf('', 8) // повертає 8 | ||
``` | ||
|
||
Однак, з будь-яким значенням `fromIndex`, яке більше або дорівнює довжині рядка, повернене значення _дорівнює_ довжині рядка: | ||
|
||
```js | ||
'привіт, світе'.indexOf('', 13) // повертає 13 | ||
'привіт, світе'.indexOf('', 15) // повертає 13 | ||
'привіт, світе'.indexOf('', 22) // повертає 13 | ||
``` | ||
|
||
В першому прикладі складається враження, що JS знаходить порожній рядок одразу після переданого значення індексу. В останньому прикладі здається, що JS знаходить порожній рядок наприкінці рядка, в якому ведеться пошук. | ||
|
||
## Опис | ||
|
||
Індекси символів у рядку нумеруються зліва направо. Індекс першого символу дорівнює `0`, а індекс останнього символу в рядку під назвою `stringName` дорівнюватиме значенню виразу `stringName.length - 1`. | ||
|
||
```js | ||
'Синій Кит'.indexOf('Синій') // повертає 0 | ||
'Синій Кит'.indexOf('Ситній') // повертає -1 | ||
'Синій Кит'.indexOf('Кит', 0) // повертає 6 | ||
'Синій Кит'.indexOf('Кит', 6) // повертає 6 | ||
'Синій Кит'.indexOf('Кит', 7) // повертає -1 | ||
'Синій Кит'.indexOf('') // повертає 0 | ||
'Синій Кит'.indexOf('', 8) // повертає 8 | ||
'Синій Кит'.indexOf('', 9) // повертає 9 | ||
'Синій Кит'.indexOf('', 10) // повертає 9 | ||
``` | ||
|
||
Метод `indexOf()` — чутливий до регістру. Наприклад, наступний вираз поверне `-1`: | ||
|
||
```js | ||
'Синій Кит'.indexOf('синій') // повертає -1 | ||
``` | ||
|
||
### Перевірка збігів | ||
|
||
Слід зауважити, що `0` не обчислюється до `true`, як і `-1` — до `false`. Тому, під час перевірки, чи міститься якийсь конкретний рядок всередині іншого рядка, правильний спосіб її виконати виглядатиме так: | ||
|
||
```js | ||
'Синій Кит'.indexOf('Синій') !== -1 // true | ||
'Синій Кит'.indexOf('Синній') !== -1 // false | ||
``` | ||
|
||
## Приклади | ||
|
||
### Застосування методу `indexOf()` | ||
|
||
Наступний приклад використовує `indexOf()` для визначення розташування значень у рядку `"Прекрасний новий світ"`. | ||
|
||
```js | ||
const str = 'Прекрасний новий світ' | ||
|
||
console.log('Перша "н" від початку рядка знаходиться за індексом ' + str.indexOf('н')) // виводить 7 | ||
console.log('"новий" знаходиться за індексом ' + str.indexOf('новий')) // виводить 11 | ||
``` | ||
|
||
### Метод `indexOf()` і чутливість до регістру | ||
|
||
Наступний приклад оголошує дві рядкові змінні. | ||
|
||
Змінні мають ідентичний вміст, за винятком того, що другий рядок також містить літери верхнього регістру. Перший виклик методу {{domxref("console.log()")}} покаже `20`. Але оскільки метод `indexOf()` чутливий до регістру, рядок "`чеддер`" не знайдеться у `myCapString`, тож другий виклик `console.log()` виведе `-1`. | ||
|
||
```js | ||
const myString = 'брі, перцевий джек, чеддер' | ||
const myCapString = 'Брі, Перцевий Джек, Чеддер' | ||
|
||
console.log('myString.indexOf("чеддер") дорівнює ' + myString.indexOf('чеддер')) | ||
// друкує 20 | ||
console.log('myCapString.indexOf("чеддер") дорівнює ' + myCapString.indexOf('чеддер')) | ||
// друкує -1 | ||
``` | ||
|
||
### Застосування `indexOf()` для обрахунку кількості появ певної літери у рядку | ||
|
||
Наступний приклад встановлює кількість `count` появ літер `т` у рядку `str`: | ||
|
||
```js | ||
const str = 'Чи бути, чи не бути — ось питання.' | ||
let count = 0 | ||
let position = str.indexOf('т') | ||
|
||
while (position !== -1) { | ||
count++ | ||
position = str.indexOf('т', position + 1) | ||
} | ||
|
||
console.log(count) // виводить 3 | ||
``` | ||
|
||
## Специфікації | ||
|
||
{{Specifications}} | ||
|
||
## Сумісність із браузерами | ||
|
||
{{Compat}} | ||
|
||
## Дивіться також | ||
|
||
- {{jsxref("String.prototype.charAt()")}} | ||
- {{jsxref("String.prototype.lastIndexOf()")}} | ||
- {{jsxref("String.prototype.includes()")}} | ||
- {{jsxref("String.prototype.split()")}} | ||
- {{jsxref("Array.prototype.indexOf()")}} |