diff options
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.html | 260 |
1 files changed, 0 insertions, 260 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 deleted file mode 100644 index 049c3ab869..0000000000 --- a/files/uk/web/javascript/reference/global_objects/array/indexof/index.html +++ /dev/null @@ -1,260 +0,0 @@ ---- -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) > -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 >= length) { - return -1; - } - - if (index < 0) { - index = Math.max(length + index, 0); - } - - if (member === undefined) { - /* - Оскільки `member` не визначено, ключі, які не існують, - будуть мати те ж значення, що і `member`, і, отже, повинні - бути перевірені. - */ - do { - if (index in that && that[index] === undefined) { - return index; - } - } while (++index < length); - } else { - do { - if (that[index] === member) { - return index; - } - } while (++index < 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 >>> 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 >= len, return -1. - if (n >= len) { - return -1; - } - - // 7. Якщо n >= 0, то нехай k дорівнює n. - // 8. Інакше, n<0, нехай k дорівнює len - abs(n). - // Якщо k менше, ніж 0, тоді нехай k дорівнює 0. - k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - - // 9. Повторювати, доки k < len - while (k < 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 && 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> |