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
}