См. также
Array. рор()
Array.reduce() (ECMAScript 5)
вычисляет значение из элементов массива
Синтаксис
<b>массив.reduce(f)</b>
<b>массив.reduce(f, начальное_значение)</b>
Аргументы
f Функция, объединяющая два значения (два элемента массива) и возвращающая новое значение «свертки».
начальное_значение Необязательное начальное значение свертки массива. Если этот аргумент указан, метод
<b>reduce()</b>
будет действовать, как если бы это значение было добавлено в начало массива.
Возвращаемое значение
Значение свертки массива, которое является результатом последнего вызова функции f.
Описание
Метод
<b>reduce()</b>
в первом аргументе принимает функцию f. Эта функция должна действовать как двухместный оператор: она должна принимать два значения, выполнять над ними некоторую операцию и возвращать результат. Если массив имеет n элементов, функция f будет вызвана методом
<b>reduce()</b>
для свертки элементов в единственное значение n -1 раз. (Возможно, вы уже знакомы с операцией свертки массивов по другим языкам программирования [61]
При первом вызове функции f передаются два первых элемента массива. При каждом следующем вызове функции f передаются значение, полученное при предыдущем вызове, и следующий элемент (в порядке возрастания индексов) массива. Возвращаемое значение последнего вызова становится возвращаемым значением метода
<b>reduce()</b>
. Методу
<b>reduce()</b>
может предаваться второй необязательный аргумент с начальным_значением. Если
начальное_значение указано, метод
<b>reduce()</b>
будет действовать так, как если бы значение этого аргумента было вставлено в начало массива (в реальности массив не модифицируется). Иными словами, если метод
<b>reduce()</b>
вызывается с двумя аргументами, то
начальное_значение будет использоваться, как если бы оно было получено ранее в результате вызова функции f. В этом случаев при первом вызове функции f будут переданы начальное_значение и первый элемент массива. Когда передается
начальное_значение, создается свертка из n+1 элементов (n элементов массива плюс начальное_ значение) и функция сбудет вызвана n раз.
Если массив пуст и начальное_значение не указано, метод
<b>reduce()</b>
возбудит исключение
<b>ТуреЕrror</b>
. Если массив пуст и
начальное_значение указано, метод
<b>reduce()</b>
вернет
начальное_значение, не вызвав f ни разу. Если массив имеет единственный элемент и
начальное_значение не указано, метод
<b>reduce()</b>
вернет единственный элемент массива, не вызывая функцию f.
Выше говорится о двух аргументах функции f, но в действительности метод
<b>reduce()</b>
передает этой функции четыре аргумента. В третьем аргументе передается индекс второго аргумента в массиве, а в четвертом - сам массив. Функция f всегда вызывается как функция, а не как метод.
Пример
[ 1,2,3,4].reduce(function(х,у) { return х*у; }) // => 24: ((1*2)*3)*4
См. также
Array.forEach(), Array.map(), Array.reduceRight()
Array.reduceRight() (ECMAScript 5)
выполняет свертку массива справа налево
Синтаксис
<b>массив. reduceRight(f)</b>
<b>массив. reduceRight(f, начальное_значение)</b>
Аргументы
f Функция, объединяющая два значения (два элемента массива) и возвращающая новое значение «свертки».
начальное_значение Необязательное начальное значение свертки массива. Если этот аргумент указан, метод
<b>reduceRight()</b>
будет действовать, как если бы это значение было добавлено в конец массива.
Возвращаемое значение
Значение свертки массива, которое является результатом последнего вызова функции f.
Описание
Метод
<b>reduceRight()</b>
действует подобно методу
<b>reduce():</b>
он вызывает n-1 раз функцию f для свертки n элементов
массива в единственное значение. Отличие
reduceRight()
от
<b> reduce()</b>
заключается только в том, что он выполняет обход элементов массива справа налево (от больших индексов к меньшим), а не слева направо. Подробности см. в статье Array.reduce().
Пример
<b>[2, 10, 60].reduceRight(function(х,у) { return х/у }) // => 3: (60/10)/2</b>
См. также
Array. reduce()
Array.reverse()
изменяет порядок следования элементов в массиве на противоположный
Синтаксис
<b>массив.reverse()</b>
Описание
Метод
<b>reverse()</b>
объекта
<b>Array</b>
меняет порядок следования элементов в массиве на противоположный. Он делает это «на месте», т. е. переупорядочивает элементы указанного массива, не создавая новый. Если есть несколько ссылок на массив, новый порядок следования элементов массива будет виден по всем ссылкам.
Пример
<b>а = new Array(1, 2, 3); // а[0] == 1, а[2] == 3; </b>
<b>a.reverse(); // Теперь а[0] == 3, а[2] == 1;</b>
Array.shift()
сдвигает элементы к началу массива
Синтаксис
<b>массив.shift()</b>
Возвращаемое значение
Бывший первый элемент массива.
Описание
Метод
<b>shift()</b>
удаляет и возвращает первый элемент массива, смещая все последующие элементы на одну позицию вниз для занятия освободившегося места в начале массива. Если массив пуст,
<b>shift()</b>
не делает ничего и возвращает значение undefined. Обратите внимание:
<b>shift()</b>
не создает новый массив, а непосредственно изменяет сам массив. Метод
<b>shift()</b>
похож на
<b>Array.рор()</b>
за исключением того, что удаление элемента производится из начала массива, а не с конца,
<b>shift()</b>
часто используется в сочетании с
<b>unshift()</b>
.