1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
---
title: String.prototype.indexOf()
slug: Web/JavaScript/Reference/Global_Objects/String/indexOf
tags:
- JavaScript
- Method
- Prototype
- Reference
- Référence(2)
- String
translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf
---
<div>{{JSRef("Global_Objects", "String")}}</div>
<h2 id="Summary" name="Summary">Сводка</h2>
<p>Метод <strong><code>indexOf()</code></strong> возвращает индекс первого вхождения указанного значения в строковый объект {{jsxref("Global_Objects/String", "String")}}, на котором он был вызван, начиная с индекса <code>fromIndex</code>. Возвращает -1, если значение не найдено.</p>
<h2 id="Syntax" name="Syntax">Синтаксис</h2>
<pre class="syntaxbox"><code><var>str</var>.indexOf(<var>searchValue</var>, [<var>fromIndex</var>]</code>)</pre>
<h3 id="Parameters" name="Parameters">Параметры</h3>
<dl>
<dt><code>searchValue</code></dt>
<dd>Строка, представляющая искомое значение.</dd>
<dt><code>fromIndex</code></dt>
<dd>Необязательный параметр. Местоположение внутри строки, откуда начинать поиск. Может быть любым целым числом. Значение по умолчанию установлено в 0. Если <code>fromIndex < 0</code>, поиск ведётся по всей строке (так же, как если бы был передан 0). Если <code>fromIndex >= str.length</code>, метод вернёт -1, но только в том случае, если <code>searchValue</code> не равен пустой строке, в этом случае он вернёт <code>str.length</code>.</dd>
</dl>
<h2 id="Description" name="Description">Описание</h2>
<p>Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке <code>stringName</code> равен <code>stringName.length - 1</code>.</p>
<pre class="brush: js">'Синий кит'.indexOf('Синий'); // вернёт 0
'Синий кит'.indexOf('Голубой'); // вернёт -1
'Синий кит'.indexOf('кит', 0); // вернёт 6
'Синий кит'.indexOf('кит', 5); // вернёт 6
'Синий кит'.indexOf('', 8); // вернёт 8
'Синий кит'.indexOf('', 9); // вернёт 9
'Синий кит'.indexOf('', 10); // вернёт 9
</pre>
<h3 id="Case-sensitivity" name="Case-sensitivity">Регистрозависимость</h3>
<p>Метод <code>indexOf()</code> является регистрозависимым. Например, следующее выражение вернёт -1:</p>
<pre class="brush: js">'Синий кит'.indexOf('синий'); // вернёт -1
</pre>
<h3 id="Checking_occurrences" name="Checking_occurrences">Проверка на вхождение</h3>
<p>Обратите внимание, что значение 0 не вычисляется в <code>true</code>, а значение -1 не вычисляется в <code>false</code>. Поэтому, для проверки того, что конкретная строка содержится в другой строке, правильно делать так:</p>
<pre class="brush: js">'Синий кит'.indexOf('Синий') !== -1; // true
'Синий кит'.indexOf('Голубой') !== -1; // false
</pre>
<h2 id="Examples" name="Examples">Примеры</h2>
<h3 id="Example:_Using_indexOf_and_lastIndexOf" name="Example:_Using_indexOf_and_lastIndexOf">Пример: использование методов <code>indexOf()</code> и <code>lastIndexOf()</code></h3>
<p>В следующем примере используются методы <code>indexOf()</code> и {{jsxref("String.prototype.lastIndexOf()", "lastIndexOf()")}} для нахождения значений в строке <code>"Дивный новый мир"</code>.</p>
<pre class="brush: js">var anyString = 'Дивный новый мир';
console.log('Индекс первого вхождения «й» с начала строки равен ' + anyString.indexOf('й'));
// Отобразит 5
console.log('Индекс первого вхождения «й» с конца строки равен ' + anyString.lastIndexOf('й'));
// Отобразит 11
console.log('Индекс вхождения «новый» с начала строки равен ' + anyString.indexOf('новый'));
// Отобразит 7
console.log('Индекс вхождения «новый» с конца строки равен ' + anyString.lastIndexOf('новый'));
// Отобразит 7
</pre>
<h3 id="Example:_indexOf_and_case-sensitivity" name="Example:_indexOf_and_case-sensitivity">Пример: метод <code>indexOf()</code> и регистрозависимость</h3>
<p>В следующем примере определяются две строковых переменных. Переменные содержат одинаковые строки, за исключение того, что слова во второй строке начинаются с заглавных букв. Первый вызов метода {{domxref("console.log()")}} отобразит 18. Но поскольку метод <code>indexOf()</code> является регистрозависимым, строка <code>"чеддер"</code> в переменной <code>myCapString</code> не будет найдена, так что второй вызов метода <code>console.log()</code> отобразит -1.</p>
<pre class="brush: js">var myString = 'бри, пеппер джек, чеддер';
var myCapString = 'Бри, Пеппер Джек, Чеддер';
console.log('Вызов myString.indexOf("чеддер") вернул ' + myString.indexOf('чеддер'));
// Отобразит 18
console.log('Вызов myCapString.indexOf("чеддер") вернул ' + myCapString.indexOf('чеддер'));
// Отобразит -1
</pre>
<h3 id="Example:_Using_indexOf_to_count_occurrences_of_a_letter_in_a_string" name="Example:_Using_indexOf_to_count_occurrences_of_a_letter_in_a_string">Пример: использование метода <code>indexOf()</code> для подсчёта вхождений буквы в строку</h3>
<p>Следующий пример устанавливает значение переменной <code>count</code> в количество вхождений буквы <code>в</code> в строку <code>str</code>:</p>
<pre class="brush: js">var str = 'Быть или не быть, вот в чём вопрос.';
var count = 0;
var pos = str.indexOf('в');
while (pos !== -1) {
count++;
pos = str.indexOf('в', pos + 1);
}
console.log(count); // отобразит 3
</pre>
<h2 id="Specifications" name="Specifications">Спецификации</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Спецификация</th>
<th scope="col">Статус</th>
<th scope="col">Комментарии</th>
</tr>
<tr>
<td>ECMAScript 1-е издание.</td>
<td>Стандарт</td>
<td>Изначальное определение.</td>
</tr>
<tr>
<td>{{SpecName('ES5.1', '#sec-15.5.4.7', 'String.prototype.indexOf')}}</td>
<td>{{Spec2('ES5.1')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-string.prototype.indexof', 'String.prototype.indexOf')}}</td>
<td>{{Spec2('ES6')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2>
<p>{{Compat}}</p>
<h2 id="See_also" name="See_also">Смотрите также</h2>
<ul>
<li>{{jsxref("String.prototype.charAt()")}}</li>
<li>{{jsxref("String.prototype.lastIndexOf()")}}</li>
<li>{{jsxref("String.prototype.split()")}}</li>
<li>{{jsxref("Array.prototype.indexOf()")}}</li>
</ul>
|