Этот урок связан с проектом Разбираем Underscore.js по косточкам

Разбираем Underscore.js по косточкам. Метод reduceRight

Продолжаем изучение Underscrore.js. В этой статейке разберём частный случай метода reduce, а именно reduceRight.

Синтаксис:

_.reduceRight(list, iterator, memo, [context])
  • list - объект,
  • iteratir - метод-итератор по элементам объекта;
  • memo - начальное значение шага редукции, которое было возвращено предыдущим вызовом iterator;
  • context: контекстный объект.

Правоассоциативная версия reduce. Взглянем на простой пример. В нём мы возвращаем массив из элементов начиная с конца:

var list = [[0, 1], [2, 3], [4, 5]];

// вернет [4, 5, 2, 3, 0, 1]
var flat = _.reduceRight(list, function(a, b) { return a.concat(b); }, []);

Теперь получим похожий результат в виде строки, передав другой параметр memo. Проверка на пустую строку будет срабатывать, когда мы каждый раз будем приступать к перебору следующего под-массива:

var productsIDs = [
    [11, 12, 13],
    [21, 22, 23],
    [31, 32, 33]
];

var productIDList = _.reduceRight(productsIDs,
        function(memo, val){
            if (memo !== '') {
                memo += ',';
            }

            return memo + val;
        }, '');

console.log(productIDList); // 31,32,33,21,22,23,11,12,13

Пример прохождения по ассоциативному массиву, начиная с конца (с правой стороны):

var movies = [
    { id: 1001 },
    { id: 1002 },
    { id: 1003 },
    { id: 1004 },
    { id: 1005 },
    { id: 1006 }
];

var IDs = _.reduceRight(movies,
        function(memo, val){
            if (memo !== '') {
                memo += ',';
            }

            return memo + val.id;
        }, '');

console.log(IDs); // 1006,1005,1004,1003,1002,1001

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.ruseller.com
Автор: Станислав Протасевич
Урок создан: 28 Февраля 2014
Просмотров: 4644
Правила перепечатки


5 последних уроков рубрики "Разное"

^ Наверх ^