Команда ReQL: map
Синтаксис команды
sequence1.map([sequence2, ...], function) → stream array1.map([array2, ...], function) → array r.map(sequence1[, sequence2, ...], function) → stream r.map(array1[, array2, ...], function) → array
Описание
Преобразует каждый элемент одной или нескольких последовательностей, применяя к ним функцию отображения. Если map используется с двумя или более последовательностями, она будет итерироваться столько раз, сколько элементов в самой короткой последовательности.
Обратите внимание, что map может быть применено только к последовательностям, а не к отдельным значениям. Если вы хотите применить функцию к одному значению/выбору (включая массив), используйте команду do.
Пример: Возвращение первых пяти квадратов.
r.expr([1, 2, 3, 4, 5]).map(function (val) {
return val.mul(val);
}).run(conn, callback);
// Result passed to callback
[1, 4, 9, 16, 25]
Пример: Сумма элементов трёх последовательностей.
var sequence1 = [100, 200, 300, 400];
var sequence2 = [10, 20, 30, 40];
var sequence3 = [1, 2, 3, 4];
r.map(sequence1, sequence2, sequence3, function (val1, val2, val3) {
return val1.add(val2).add(val3);
}).run(conn, callback);
// Result passed to callback
[111, 222, 333, 444]
Пример: Переименование поля при получении документов с использованием map и merge.
В этом примере поле id переименовывается в userId при получении документов из таблицы users.
r.table('users').map(function (doc) {
return doc.merge({userId: doc('id')}).without('id');
}).run(conn, callback);
Обратите внимание, что в этом случае row может быть использован как альтернатива анонимной функции, так как он возвращает то же значение, что и параметр функции:
r.table('users').map(
r.row.merge({userId: r.row('id')}).without('id');
}).run(conn, callback);
Пример: Присвоение каждому супергерою злейшего врага.
r.table('heroes').map(r.table('villains'), function (hero, villain) {
return hero.merge({villain: villain});
}).run(conn, callback);
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/map/