aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/global_objects/array/every/index.html
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
commit074785cea106179cb3305637055ab0a009ca74f2 (patch)
treee6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/web/javascript/reference/global_objects/array/every/index.html
parentda78a9e329e272dedb2400b79a3bdeebff387d47 (diff)
downloadtranslated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz
translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2
translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip
initial commit
Diffstat (limited to 'files/ru/web/javascript/reference/global_objects/array/every/index.html')
-rw-r--r--files/ru/web/javascript/reference/global_objects/array/every/index.html195
1 files changed, 195 insertions, 0 deletions
diff --git a/files/ru/web/javascript/reference/global_objects/array/every/index.html b/files/ru/web/javascript/reference/global_objects/array/every/index.html
new file mode 100644
index 0000000000..db333915d9
--- /dev/null
+++ b/files/ru/web/javascript/reference/global_objects/array/every/index.html
@@ -0,0 +1,195 @@
+---
+title: Array.prototype.every()
+slug: Web/JavaScript/Reference/Global_Objects/Array/every
+tags:
+ - Array
+ - ECMAScript5
+ - JavaScript
+ - JavaScript 1.6
+ - Method
+ - Prototype
+ - Reference
+ - polyfill
+translation_of: Web/JavaScript/Reference/Global_Objects/Array/every
+---
+<div>{{JSRef("Global_Objects", "Array")}}</div>
+
+<h2 id="Summary" name="Summary">Сводка</h2>
+
+<p>Метод <code><strong>every()</strong></code> проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.</p>
+
+<div class="note">
+<p><strong>Обратите внимание</strong>: метод возвращает <code>true</code> при любом условии для пустого массива.</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">Синтаксис</h2>
+
+<pre class="syntaxbox">arr.every(callback(currentValue[, index[, array]])[, thisArg])</pre>
+
+<h3 id="Parameters" name="Parameters">Параметры</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>Функция проверки каждого элемента, принимает три аргумента:
+ <dl>
+ <dt><code>currentValue</code></dt>
+ <dd>Текущий обрабатываемый элемент массива.</dd>
+ <dt><code>index</code>{{Optional_inline}}</dt>
+ <dd>Индекс текущего обрабатываемого элемента массива.</dd>
+ <dt><code>array</code>{{Optional_inline}}</dt>
+ <dd>Массив, по которому осуществляется проход.</dd>
+ </dl>
+ </dd>
+ <dt><code>thisArg</code>{{Optional_inline}}</dt>
+ <dd>Необязательный параметр. Значение, используемое в качестве <code>this</code> при выполнении функции <code>callback</code>.</dd>
+</dl>
+
+<h3 id="Возвращаемое_значение">Возвращаемое значение</h3>
+
+<p><code><strong>true</strong></code> если функция проверки возвращает {{Glossary("truthy")}} значение для каждого элемента массива. Иначе, <code><strong>false</strong></code>.</p>
+
+<h2 id="Description" name="Description">Описание</h2>
+
+<p>Метод <code>every()</code> вызывает переданную функцию <code>callback</code> один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдет такой, для которого <code>callback</code> вернет <em>ложное</em> значение (значение, становящееся равным <code>false</code> при приведении его к типу {{jsxref("Boolean")}}). Если такой элемент найден, метод <code>every()</code> немедленно вернёт <code>false</code>. В противном случае, если <code>callback</code> вернёт <code>true</code> для всех элементов массива, метод <code>every()</code> вернёт <code>true</code>. Функция <code>callback</code> вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.</p>
+
+<p>Функция <code>callback</code> вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.</p>
+
+<p>Если в метод <code>every()</code> был передан параметр <code>thisArg</code>, при вызове <code>callback</code> он будет использоваться в качестве значения <code>this</code>. В противном случае в качестве значения <code>this</code> будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение <code>this</code>, наблюдаемое из функции <code>callback</code>, определяется согласно <a href="/ru/docs/Web/JavaScript/Reference/Operators/this">обычным правилам определения <code>this</code>, видимого из функции</a>.</p>
+
+<p>Метод <code>every()</code> не изменяет массив, для которого он был вызван.</p>
+
+<p>Диапазон элементов, обрабатываемых методом <code>every()</code>, устанавливается до первого вызова функции <code>callback</code>. Элементы, добавленные в массив после начала выполнения метода <code>every()</code>, не будут посещены функцией <code>callback</code>. Если существующие элементы массива изменятся, значения, переданные в функцию <code>callback</code>, будут значениями на тот момент времени, когда метод <code>every()</code> посетит их; удалённые элементы посещены не будут.</p>
+
+<p>Метод <code>every()</code> действует подобно квантору всеобщности в математике. В частности, он вернёт <code>true</code> для пустого массива. Это так называемая <a href="http://en.wikipedia.org/wiki/Vacuous_truth#Vacuous_truths_in_mathematics">бессодержательная истина (vacuously true)</a> — все элементы <a href="http://ru.wikipedia.org/wiki/Пустое_множество">пустого множества</a> (<a href="http://en.wikipedia.org/wiki/Empty_set#Common_problems">англ.</a>) удовлетворяют любому заданному условию.</p>
+
+<h2 id="Examples" name="Examples">Примеры</h2>
+
+<h3 id="Example:_Testing_size_of_all_array_elements" name="Example:_Testing_size_of_all_array_elements">Пример: проверка размера всех элементов массива</h3>
+
+<p>Следующий пример проверяет, являются ли все элементы массива числами, большими 10.</p>
+
+<pre class="brush: js">function isBigEnough(element, index, array) {
+ return element &gt;= 10;
+}
+[12, 5, 8, 130, 44].every(isBigEnough); // false
+[12, 54, 18, 130, 44].every(isBigEnough); // true
+</pre>
+
+<h3 id="Example:_Using_arrow_functions" name="Example:_Using_arrow_functions">Пример: использование стрелочных функций</h3>
+
+<p><a href="/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Стрелочные функции</a> предоставляют более краткий синтаксис для подобных проверок.</p>
+
+<pre class="brush: js">[12, 5, 8, 130, 44].every(elem =&gt; elem &gt;= 10); // false
+[12, 54, 18, 130, 44].every(elem =&gt; elem &gt;= 10); // true
+</pre>
+
+<h2 id="Polyfill" name="Polyfill">Полифилл</h2>
+
+<p>Метод <code>every()</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может не присутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>every()</code> в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; и предполагает что {{jsxref("Object")}} и {{jsxref("TypeError")}} имеют свои первоначальные значения и что <code>callback.call</code> вычисляется в оригинальное значение {{jsxref("Function.prototype.call()")}}.</p>
+
+<pre class="brush: js">if (!Array.prototype.every) {
+ Array.prototype.every = function(callbackfn, thisArg) {
+ 'use strict';
+ var T, k;
+
+ if (this == null) {
+ throw new TypeError('this is null or not defined');
+ }
+
+ // 1. Положим O равным результату вызова ToObject над значением
+ // this, переданным в качестве аргумента.
+ var O = Object(this);
+
+ // 2. Положим lenValue равным результату вызова внутреннего метода Get
+ // объекта O с аргументом "length".
+ // 3. Положим len равным ToUint32(lenValue).
+ var len = O.length &gt;&gt;&gt; 0;
+
+ // 4. Если IsCallable(callbackfn) равен false, выкинем исключение TypeError.
+ if (typeof callbackfn !== 'function') {
+ throw new TypeError();
+ }
+
+ // 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined.
+ if (arguments.length &gt; 1) {
+ T = thisArg;
+ }
+
+ // 6. Положим k равным 0.
+ k = 0;
+
+ // 7. Пока k &lt; len, будем повторять
+ while (k &lt; len) {
+
+ var kValue;
+
+ // a. Положим Pk равным ToString(k).
+ // Это неявное преобразование для левостороннего операнда в операторе in
+ // b. Положим kPresent равным результату вызова внутреннего метода
+ // HasProperty объекта O с аргументом Pk.
+ // Этот шаг может быть объединён с шагом c
+ // c. Если kPresent равен true, то
+ if (k in O) {
+
+ // i. Положим kValue равным результату вызова внутреннего метода Get
+ // объекта O с аргументом Pk.
+ kValue = O[k];
+
+ // ii. Положим testResult равным результату вызова внутреннего метода Call
+ // функции callbackfn со значением T в качестве this и списком аргументов,
+ // содержащим kValue, k и O.
+ var testResult = callbackfn.call(T, kValue, k, O);
+
+ // iii. Если ToBoolean(testResult) равен false, вернём false.
+ if (!testResult) {
+ return false;
+ }
+ }
+ k++;
+ }
+ return true;
+ };
+}
+</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>{{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td>Изначальное определение. Реализована в JavaScript 1.6.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2>
+
+<div></div>
+
+<div id="compat-mobile">{{Compat("javascript.builtins.Array.every")}}</div>
+
+<h2 id="See_also" name="See_also">Смотрите также</h2>
+
+<ul>
+ <li>{{jsxref("Array.prototype.forEach()")}}</li>
+ <li>{{jsxref("Array.prototype.some()")}}</li>
+ <li>{{jsxref("Array.prototype.find()")}}</li>
+ <li>{{jsxref("TypedArray.prototype.every()")}}</li>
+</ul>