Spec-Zone.ru › ReactiveX

Карта

преобразовать элементы, испускаемые Observable, применяя функцию к каждому элементу
Открыть интерактивную диаграмму на rxmarbles.com

Оператор Map применяет функцию по вашему выбору к каждому элементу, испускаемому исходным Observable, и возвращает Observable, который испускает результаты этих применений функций.

См. также

  • FlatMap
  • Введение в Rx: Select
  • RxMarbles: map
  • 101 Примеры Rx: Select — Индексированный
  • Использование метода map с Observable от Джафара Хусейна (видеоурок по JavaScript)

Информация, специфичная для языка

RxGroovy byLine cast encode map

map

RxGroovy реализует этот оператор как map. Например, следующий код отображает функцию, которая возводит в квадрат входящее значение, на значения в numbers:

Пример кода

numbers = Observable.from([1, 2, 3, 4, 5]);

numbers.map({it * it}).subscribe(
  { println(it); },                          // onNext
  { println("Error: " + it.getMessage()); }, // onError
  { println("Sequence complete"); }          // onCompleted
);
1
4
9
16
25
Sequence complete

Этот оператор по умолчанию не работает с каким-либо конкретным Планировщиком.

  • Javadoc: map(Func1)
cast

Оператор cast является специализированной версией Map, которая преобразует каждый элемент из исходного Observable, преобразовав его в конкретный класс перед повторной передачей.

  • Javadoc: cast(Class)
encode

В классе StringObservable, который не входит в ядро RxGroovy, также есть специализированный оператор отображения, encode, который преобразует Observable, испускающий строки, в Observable, испускающий массивы байтов, которые учитывают границы символов многобайтовых символов в исходных строках.

byLine

Также в классе StringObservable, который не входит в ядро RxGroovy, есть специализированный оператор отображения, называемый byLine, который преобразует Observable, испускающий строки, в Observable, испускающий строки текста, буферизуя строки из исходного Observable, пока не найдена символы новой строки в одном из них.

RxJava 1․x byLine cast encode map

map

RxJava реализует этот оператор как map.

Этот оператор по умолчанию не работает с каким-либо конкретным Планировщиком.

  • Javadoc: map(Func1)
cast

Оператор cast является специализированной версией Map, которая преобразует каждый элемент из исходного Observable, преобразовав его в конкретный класс перед повторной передачей.

  • Javadoc: cast(Class)
encode

В классе StringObservable, который не входит в ядро RxJava, также есть специализированный оператор отображения, encode, который преобразует Observable, испускающий строки, в Observable, испускающий массивы байтов, которые учитывают границы символов многобайтовых символов в исходных строках.

byLine

Также в классе StringObservable, который не входит в ядро RxJava, есть специализированный оператор отображения, называемый byLine, который преобразует Observable, испускающий строки, в Observable, испускающий строки текста, буферизуя строки из исходного Observable, пока не найдена символы новой строки в одном из них.

RxJS map pluck select

map

RxJS реализует этот оператор как map или select (они синонимичны). В дополнение к функции преобразования, вы можете передать этому оператору необязательный второй параметр, который станет контекстом «this», в котором будет выполняться функция преобразования.

Функция преобразования получает три параметра:

  1. испускаемый элемент
  2. индекс этого элемента в последовательности испускаемых элементов
  3. Observable, из которого был испущен этот элемент

Пример кода

// Using a value
var md = Rx.Observable.fromEvent(document, 'mousedown').map(true);
var mu = Rx.Observable.fromEvent(document, 'mouseup').map(false);

// Using a function
var source = Rx.Observable.range(1, 3)
    .select(function (x, idx, obs) {
        return x * x;
    });

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: 1
Next: 4
Next: 9
Completed
pluck

Также существует оператор pluck, который является упрощенной версией этого оператора. Он преобразует элементы, испускаемые исходным Observable, извлекая единственное именованное свойство из этих элементов и испускает это свойство вместо них.

Пример кода

var source = Rx.Observable
    .fromArray([
        { value: 0 },
        { value: 1 },
        { value: 2 }
    ])
    .pluck('value');

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: 0
Next: 1
Next: 2
Completed

map/select и pluck находятся в каждом из следующих распределений:

  • rx.js
  • rx.all.js
  • rx.all.compat.js
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js

См. также

  • Rx.helpers.pluck(property) из книги RxJS от Денниса Стоянова

RxPHP map mapWithIndex mapTo select pluck

RxPHP реализует этот оператор как map.

Принимает функцию преобразования, которая работает с каждым элементом.

Пример кода

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/map/map.php

$observable = \Rx\Observable::fromArray([21, 42]);
$observable
    ->map(function ($elem) {
        return $elem * 2;
    })
    ->subscribe($stdoutObserver);
Next value: 42
Next value: 84
Complete!

RxPHP также имеет оператор mapWithIndex.

Вариант оператора map, который вызывает селектор map с индексом и значением

Пример кода

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/map/mapWithIndex.php

$subscriptions = Rx\Observable::fromArray([21, 42])
    ->mapWithIndex(function ($index, $elem) {
        return $index + $elem;
    })
    ->subscribe($stdoutObserver);
Next value: 21
Next value: 43
Complete!

RxPHP также имеет оператор mapTo.

Отображает каждое значение на то же значение каждый раз

Пример кода

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/map/mapTo.php

$subscription = Rx\Observable::fromArray([21, 42])
    ->mapTo(1)
    ->subscribe($stdoutObserver);
Next value: 1
Next value: 1
Complete!

RxPHP также имеет оператор select.

Псевдоним для Map

RxPHP также имеет оператор pluck.

Возвращает Observable, содержащий значение указанного индекса массива (если массив) или свойства (если объект) из всех элементов в последовательности Observable. Если свойство не может быть определено, observable выдаст ошибку.

Пример кода

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/pluck/pluck.php

$source = Rx\Observable::fromArray([
    (object)['value' => 0],
    (object)['value' => 1],
    (object)['value' => 2]
])
    ->pluck('value');

$subscription = $source->subscribe($stdoutObserver);
Next value: 0
Next value: 1
Next value: 2
Complete!

© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/map.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API