aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/array/indexof
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:43:23 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:43:23 -0500
commit218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (patch)
treea9ef8ac1e1b8fe4207b6d64d3841bfb8990b6fd0 /files/uk/web/javascript/reference/global_objects/array/indexof
parent074785cea106179cb3305637055ab0a009ca74f2 (diff)
downloadtranslated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.gz
translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.bz2
translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.zip
initial commit
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/array/indexof')
-rw-r--r--files/uk/web/javascript/reference/global_objects/array/indexof/index.html260
1 files changed, 260 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/array/indexof/index.html b/files/uk/web/javascript/reference/global_objects/array/indexof/index.html
new file mode 100644
index 0000000000..049c3ab869
--- /dev/null
+++ b/files/uk/web/javascript/reference/global_objects/array/indexof/index.html
@@ -0,0 +1,260 @@
+---
+title: Array.prototype.indexOf()
+slug: Web/JavaScript/Reference/Global_Objects/Array/indexOf
+tags:
+ - Array
+ - JavaScript
+ - Масив
+ - метод
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf
+---
+<div>{{JSRef}}</div>
+
+<p>Метод <code><strong>indexOf()</strong></code> повертає перший індекс, за яким даний елемент був знайдений в масиві, а якщо він відсутній, то повертає -1.</p>
+
+<div class="note">
+<p><strong>Примітка:</strong> Щодо метода String, дивіться {{jsxref("String.prototype.indexOf()")}}.</p>
+</div>
+
+<pre class="brush: js">var a = [2, 9, 9];
+a.indexOf(2); // 0
+a.indexOf(7); // -1
+
+if (a.indexOf(7) === -1) {
+ // елемент не існує у масиві
+}
+</pre>
+
+<h2 id="Синтаксис">Синтаксис</h2>
+
+<pre class="syntaxbox"><var>arr</var>.indexOf(<var>searchElement[</var>, <var>fromIndex]</var>)</pre>
+
+<h3 id="Параметри">Параметри</h3>
+
+<dl>
+ <dt><code>searchElement</code></dt>
+ <dd>Елемент, який потрібно знайти.</dd>
+ <dt><code>fromIndex</code> {{optional_inline}}</dt>
+ <dd>Індекс, з якого починається пошук. Якщо індекс більше або дорівнює довжині масиву, повертається  -1, що означає, що масив не буде шукатися. Якщо значення показника є від'ємним числом, то воно трактується як зміщення від кінця масиву.</dd>
+ <dd><code>Примітка:</code> якщо наданий індекс від'ємний, масив все ще ітерується спереду назад. Якщо індекс  рівний 0, то буде проведений пошук по всьому масиву. За замовчуванням: 0 (виконується пошук по всьому масиву).</dd>
+</dl>
+
+<h3 id="Значення_яке_повертається">Значення, яке повертається</h3>
+
+<p>Перший індекс елемента в масиві; якщо не знайдено, то <strong>-1</strong>.</p>
+
+<h2 id="Опис">Опис</h2>
+
+<p><code>indexOf()</code> порівнює <code>searchElement</code> з елементами Масиву, використовуючи <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">строгу рівність</a> (той самий метод, що використовується з допомогою <code>===</code> або потрійним дорівнює).</p>
+
+<h2 id="Приклад">Приклад</h2>
+
+<h3 id="Використання_indexOf()">Використання <code>indexOf()</code></h3>
+
+<p>У наступному прикладі <code>indexOf()</code> використовується для пошуку значень в масиві.</p>
+
+<pre class="brush: js">var array = [2, 9, 9];
+array.indexOf(2); // 0
+array.indexOf(7); // -1
+array.indexOf(9, 2); // 2
+array.indexOf(2, -1); // -1
+array.indexOf(2, -3); // 0
+</pre>
+
+<h3 id="Пошук_всіх_відопвідностей_на_елементі">Пошук всіх відопвідностей на елементі</h3>
+
+<pre class="brush: js">var indices = [];
+var array = ['a', 'b', 'a', 'c', 'a', 'd'];
+var element = 'a';
+var idx = array.indexOf(element);
+while (idx != -1) {
+ indices.push(idx);
+ idx = array.indexOf(element, idx + 1);
+}
+console.log(indices);
+// [0, 2, 4]
+</pre>
+
+<h3 id="Пошук_чи_існує_елемент_в_масиві_і_його_оновлення">Пошук, чи існує елемент в масиві, і його оновлення </h3>
+
+<pre class="brush: js">function updateVegetablesCollection (veggies, veggie) {
+ if (veggies.indexOf(veggie) === -1) {
+ veggies.push(veggie);
+ console.log('Оновлений набір овочів : ' + veggies);
+ } else if (veggies.indexOf(veggie) &gt; -1) {
+ console.log(veggie + ' вже існує у наборі овочів.');
+ }
+}
+
+var veggies = ['картопля', 'помідор', 'чилі', 'зелений перець'];
+
+updateVegetablesCollection(veggies, 'шпинат');
+// Оновлений набір овочів: картопля,помідор,чилі,зелений перець,шпинат
+updateVegetablesCollection(veggies, 'шпинат');
+// шпинат вже існує у наборі овочів.
+</pre>
+
+<h2 id="Поліфіл">Поліфіл</h2>
+
+<p><code>indexOf()</code> був доданий в стандарт ECMA-262 в 5-му виданні; як такий він може бути присутнім не у всіх браузерах. Це можна обійти, використовуючи наступний код на початку скриптів. Це дозволить вам використовувати метод <code>indexOf()</code>, коли ще немає вбудованої підтримки в браузері. Цей алгоритм збігається із зазначеною в ECMA-262, 5-е видання, припускаючи, що{{jsxref("Global_Objects/TypeError", "TypeError")}} і {{jsxref("Math.abs()")}} має свої оригінальні значення.</p>
+
+<pre class="brush: js">if (!Array.prototype.indexOf) {
+ Array.prototype.indexOf = function indexOf(member, startFrom) {
+ /*
+ У спрощеному режимі, якщо змінна `this` має значення null або
+ undefined, то вона встановлюється в об'єкт window. В іншому випадку
+ `this` автоматично перетворюється в об'єкт. У строгому режимі, якщо
+ змінна 'this' має значення null або undefined, генерується 'TypeError'.
+ */
+ if (this == null) {
+ throw new TypeError("Array.prototype.indexOf() - can't convert `" + this + "` to object");
+ }
+
+ var
+ index = isFinite(startFrom) ? Math.floor(startFrom) : 0,
+ that = this instanceof Object ? this : new Object(this),
+ length = isFinite(that.length) ? Math.floor(that.length) : 0;
+
+ if (index &gt;= length) {
+ return -1;
+ }
+
+ if (index &lt; 0) {
+ index = Math.max(length + index, 0);
+ }
+
+ if (member === undefined) {
+ /*
+ Оскільки `member` не визначено, ключі, які не існують,
+  будуть мати те ж значення, що і `member`, і, отже, повинні
+  бути перевірені.
+ */
+ do {
+ if (index in that &amp;&amp; that[index] === undefined) {
+ return index;
+ }
+ } while (++index &lt; length);
+ } else {
+ do {
+ if (that[index] === member) {
+ return index;
+ }
+ } while (++index &lt; length);
+ }
+
+ return -1;
+ };
+}</pre>
+
+<p>Однак, якщо ви більше зацікавлені у всіх маленьких технічних бітах, визначених стандартом ECMA, і менше стурбовані продуктивністю або лаконічністю, то ви можете знайти це більш описове заповнення більш корисним.</p>
+
+<pre class="brush: js">// Кроки продукції ECMA-262, Edition 5, 15.4.4.14
+// Посилання: http://es5.github.io/#x15.4.4.14
+if (!Array.prototype.indexOf) {
+ Array.prototype.indexOf = function(searchElement, fromIndex) {
+
+ var k;
+
+ // 1. Нехай o є результатом виклику ToObject, що передає це
+ // значення в якості аргументу.
+ if (this == null) {
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. Нехай lenValue є результатом виклику Get,
+  // внутрішнього методу o з аргументом "length".
+ // 3. Нехай len буде ToUint32(lenValue).
+ var len = o.length &gt;&gt;&gt; 0;
+
+ // 4. Якщо len рівне 0, return -1.
+ if (len === 0) {
+ return -1;
+ }
+
+ // Якщо аргумент fromIndex був переданий, let n =
+  // ToInteger(fromIndex); інакше let n = 0.
+ var n = fromIndex | 0;
+
+ // 6. Якщо n &gt;= len, return -1.
+ if (n &gt;= len) {
+ return -1;
+ }
+
+ // 7. Якщо n &gt;= 0, то нехай k дорівнює n.
+ // 8. Інакше, n&lt;0, нехай k дорівнює len - abs(n).
+ // Якщо k менше, ніж 0, тоді нехай k дорівнює 0.
+ k = Math.max(n &gt;= 0 ? n : len - Math.abs(n), 0);
+
+ // 9. Повторювати, доки k &lt; len
+ while (k &lt; len) {
+ // а. Нехай Pk дорівнює ToString(k). Це неочевидно для лівосторонніх операндів оператора in
+ // б. Нехай kPresent буде результатом виклику
+ // внутрішнього метода o HasProperty з аргументом Pk.
+ // Цей крок можна поєднати з в
+ // в. Якщо kPresent дорівнює true, тоді
+ // i. Нехай elementK буде результатом виклику
+ // внутрішнього метода o Getwith з аргументом ToString(k).
+ // ii. Нехай те саме буде результатом застосування
+ // Алгоритму Строгого Порівняння (Strict Equality Comparison Algorithm)
+ // до searchElement та elementK.
+ // iii. Якщо те саме дорівнює true, повернути k.
+ if (k in o &amp;&amp; o[k] === searchElement) {
+ return k;
+ }
+ k++;
+ }
+ return -1;
+ };
+}
+</pre>
+
+<h2 id="Специфікації">Специфікації</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Специфікація</th>
+ <th scope="col">Статус</th>
+ <th scope="col">Коментар</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td>Початкове визначення. Реалізовано у JavaScript 1.6.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>
+
+<div>
+
+
+<p>{{Compat("javascript.builtins.Array.indexOf")}}</p>
+</div>
+
+<h2 id="Примітки_щодо_сумісності">Примітки щодо сумісності</h2>
+
+<ul>
+ <li>Починаючи з Firefox 47 {{geckoRelease(47)}},  цей метод більше не повертатиме <code>-0</code>. Наприклад, <code>[0].indexOf(0, -0)</code> тепер завжди повертатиме <code>+0</code> ({{bug(1242043)}}).</li>
+</ul>
+
+<h2 id="Див._також">Див. також</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.lastIndexOf()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.indexOf()")}}</li>
+ <li>{{jsxref("String.prototype.indexOf()")}}</li>
+</ul>