You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/4-data-structures/9-array-iteration/article.md
+7-9Lines changed: 7 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@
8
8
9
9
Метод ["arr.forEach(callback[, thisArg])"](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach) используется для перебора массива.
10
10
11
-
Он для каждого элемента массива вызывает функцию `callback`.
11
+
Он для каждого элемента массива вызывает функцию `callback`.
12
12
13
13
Этой функции он передаёт три параметра `callback(item, i, arr)`:
14
14
@@ -120,17 +120,17 @@ alert( arr.some(isPositive) ); // true, есть хоть одно положи
120
120
121
121
Кроме `callback`, методу можно передать "начальное значение" -- аргумент `initialValue`. Если он есть, то на первом вызове значение `previousValue` будет равно `initialValue`, а если у `reduce` нет второго аргумента, то оно равно первому элементу массива, а перебор начинается со второго.
122
122
123
-
Проще всего понять работу метода `reduce` на примере.
123
+
Проще всего понять работу метода `reduce` на примере.
124
124
125
-
Например, в качестве "свёртки" мы хотим получить сумму всех элементов массива.
125
+
Например, в качестве "свёртки" мы хотим получить сумму всех элементов массива.
126
126
127
127
Вот решение в одну строку:
128
128
129
129
```js
130
130
//+ run
131
131
var arr = [1, 2, 3, 4, 5]
132
132
133
-
// для каждого элемента массива запустить функцию,
133
+
// для каждого элемента массива запустить функцию,
134
134
// промежуточный результат передавать первым аргументом далее
135
135
var result =arr.reduce(function(sum, current) {
136
136
return sum + current;
@@ -212,13 +212,11 @@ var result = arr.reduce(function(sum, current) {
212
212
alert( result ); // 15
213
213
```
214
214
215
-
Результат -- точно такой же! Это потому, что при отсутствии `initialValue` в качестве первого значения берётся первый элемент массива, а перебор стартует со второго.
215
+
Результат -- точно такой же! Это потому, что при отсутствии `initialValue` в качестве первого значения берётся первый элемент массива, а перебор стартует со второго.
216
216
217
217
Таблица вычислений будет такая же, за вычетом первой строки.
218
218
219
-
**Метод [arr.reduceRight](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduceRight) работает аналогично, но идёт по массиву справа-налево:**
220
-
221
-
219
+
**Метод [arr.reduceRight](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduceRight) работает аналогично, но идёт по массиву справа-налево.**
222
220
223
221
## Итого
224
222
@@ -232,4 +230,4 @@ alert( result ); // 15
232
230
</ul>
233
231
234
232
Во многих ситуациях их использование позволяет написать код короче и понятнее, чем обычный перебор через `for`.
0 commit comments