Skip to content

Array.prototype.reduce

garevna edited this page Dec 27, 2018 · 19 revisions

🎓 Итерирующие методы массивов

entries()
every()
filter()
find()
findIndex()
flatMap()
forEach()
keys()
map()


🎓 reduce()

Сводит массив в единственному значению

Функция, которая передается методу в качестве первого ( обязательного ) аргумента, имеет два формальных параметра: - первый: имя переменной-аккумулятора, а которой будет результат работы метода - второй: текущий элемент массива

Этот метод получает два аргумента: обязательный первый аргумент - функция, которая будет вызвана для каждого элемента массива опциональный второй аргумент - стартовое значение аккумулятора

Для примера создадим массив банковских карт:

var cards = [
    { num: "457892425", cash: 1100 },
    { num: "457812840", cash: 3000 },
    { num: "457855780", cash: 1200 },
    { num: "457811714", cash: 5000 }
]
☕ 1️⃣

Посчитаем сумму средств на всех картах:

cards.reduce (
    function ( result, card ) {
        return result + card.cash
    },
    0
)
// 10300
☕ 2️⃣

Создадим новую карту, на которую аккумулируем остатки на счетах все карт:

cards.reduce (
    function ( result, card ) {
        return {
            num: result.num,
            cash: result.cash + card.cash
        }
    },
    {
        num: "457855155",
        cash: 0
    }
)
Результат в консоли:
▼ { num: "457855155", cash: 10300 }
    cash: 10300
    num: "457855155"
  ► __proto__: Object
☕ 3️⃣

Для чистоты результата дополнительно обнулим остатки на счетах других карт:

cards.reduce (
    function ( result, card ) {
        var cash = card.cash
        card.cash = 0
        return {
            num: result.num,
            cash: result.cash + cash
        }
    },
    {
        num: "457855155",
        cash: 0
    }
)
Теперь исходный массив карт будет:
▼ (4) [{…}, {…}, {…}, {…}]
  ► 0: {num: "457892425", cash: 0}
  ► 1: {num: "457812840", cash: 0}
  ► 2: {num: "457855780", cash: 0}
  ► 3: {num: "457811714", cash: 0}
    length: 4
  ► __proto__: Array(0)
☕ 4️⃣
var arr = [
    "google",
    "mozilla",
    "ie",
    "mozilla",
    "mozilla",
    "google",
    "mozilla",
    "ie",
    "ie",
    "google"
]

arr.reduce (
    function ( result, item ) {
        result.indexOf ( item ) < 0 ? 
            result.push ( item ) : null
        return result
    },
    []
)
Результат в консоли:
▼ (3) ["google", "mozilla", "ie"]
    0: "google"
    1: "mozilla"
    2: "ie"
    length: 3
  ► __proto__: Array(0)

reduceRight()
some()
sort()
values()

© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав


Новая версия


1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19

Занятие 1

⤵️

Занятие 2

⤴️ ⤵️

Занятие 3

⤴️ ⤵️

Занятие 4

⤴️ ⤵️

Занятие 5

⤴️ ⤵️

Занятие 6

⤴️ ⤵️

Занятие 7

⤴️ ⤵️

Занятие 8

⤴️ ⤵️

Занятие 9

⤴️ ⤵️

Занятие 10

⤴️ ⤵️

Занятие 11

⤴️ ⤵️

Занятие 12

⤴️ ⤵️

Занятие 13

⤴️ ⤵️

Занятие 14

⤴️ ⤵️

Занятие 15

⤴️ ⤵️

Занятие 16

⤴️ ⤵️

Занятие 17

⤴️ ⤵️

Занятие 18

⤴️ ⤵️

Занятие 19

⤴️ ⤵️

⤴️

ico20 Дополнительно
dir-20 Справочная инфо

Clone this wiki locally