PreparePlan.prototype.reduce

PreparePlan.prototype.reduce(
   functionref as String,
   [seed as String]
) as IteratePlan

Summary

This method applies a function or the builtin reducer to each row returned by the plan to produce a single result as with the reduce() method of JavaScript Array.

The signature of the reducer must be function(previous, row), where previous is the seed on the first request and the return from the previous call on subsequent request and row is the current row.

The implementation of a PreparePlan.prototype.reduce method can call prototype.map methods to chain map calls with reduce calls.

Parameters
functionref The function to be applied.
seed The value returned by the previous request.

Usage Notes

reduce is a method of the following classes:

Example

const op = require('/MarkLogic/optic');

const employees = op.fromView("main", "employees");

function fibReducer(previous, result) {
	  const i = Array.isArray(previous) ? previous.length : 0;

	  result.i = i;

	  switch(i) {
	  case 0:
	    result.fib = 0;
	    break;
	  case 1:
	    result.fib = 1;
	    break;
	  default:
	    result.fib = previous[i - 2].fib + previous[i - 1].fib;
	    break;
	  }

	  if (i === 0) {
	    previous = [result];
	  } else {
	    previous.push(result);
	  }

	  return previous;
	}

employees.orderBy('EmployeeID')
       .reduce(fibReducer)
       .result();

  
Powered by MarkLogic Server | Terms of Use | Privacy Policy