Zum Hauptinhalt springen

Iterators.reduce

Die reduce Methode reduziert ein Array auf einen einzigen Wert, indem es jeweils zwei Elemente (von links nach rechts) durch eine gegebene Funktion reduziert.

Iterators.reduce<TReturn>(
iterable,
(accumulator: TReturn, currentItem: T, index: number) => TReturn,
initialValue: TReturn
): TReturn;

Folgende Iteratoren werden unterstützt:

  • AccessProfileIterator
  • ArchiveConnectionBlobIterator
  • ArchiveFileResultset
  • ArchiveServerIterator
  • ControlFlowIterator
  • CustomPropertyIterator
  • DocumentIterator
  • FileResultset
  • FolderIterator
  • HitResultset
  • RegisterIterator
  • SystemUserIterator
  • WorkflowStepIterator
tipp

Alle Funktionen sind hier beschrieben.

Beispiel Summenbildung​

In diesem Beispiel wird aus dem ptpInvoice Mappentyp der totalAmount ausgelesen und summiert.

context.enableModules();
const { Iterators } = require("ou.sp.Iterators");

const files = new FileResultset("ptpInvoice", "", "");

context.returnValue = Iterators.reduce(files, (acc, file) => {
acc += file.totalAmount;
return acc;
}, 0);

Result:

42

Komplexes Beispiel​

In diesem komplexeren Beispiel wird aus dem ptpInvoice Mappentyp der totalAmount pro costCenter ausgelesen und summiert. Das Ergebnis ist ein Objekt mit costCenter als key und die Summe als Wert.

context.enableModules();
const { Iterators } = require("ou.sp.Iterators");

const files = new FileResultset("ptpInvoice", "", "");

context.returnValue = Iterators.reduce(files, (acc, file) => {
acc[file.costCenter] = acc[file.costCenter] || 0;
acc[file.costCenter] += file.totalAmount;
return acc;
}, {});

Result:

{
"3000": 4200,
"3001": 1000
}