This page is part of a static HTML representation of the TiddlyWiki at https://tiddlywiki.com/

Reduce Filter Run Prefix (Examples)

5th March 2023 at 12:54pm

The following examples use these data tiddlers:

[tag[shopping]] :reduce[get[quantity]add<accumulator>]

[tag[shopping]] :reduce[get[price]multiply{!!quantity}add<accumulator>]

[tag[shopping]] :reduce[<index>compare:number:gt[0]then<accumulator>addsuffix[, ]addsuffix<currentTiddler>else<currentTiddler>]
→ Uses <index> to act differently on the first item than the rest. Just for demonstration. Better to use the join Operator to accomplish this task

[tag[non-existent]] :reduce[get[price]multiply{!!quantity}add<accumulator>]
→ Empty input produces empty output

[tag[non-existent]] :reduce[get[price]multiply{!!quantity}add<accumulator>] :else[[0]]
→ Use :else to ensure output if input was empty

Tip
Unlike the reduce Operator, the :reduce prefix cannot specify an initial value for the accumulator, so its initial value will always be empty (which is treated as 0 by mathematical operators). So =1 =2 =3 :reduce[multiply<accumulator>] will produce 0, not 6. If you need to specify an initial accumulator value, use the reduce Operator.
=1 =2 =3 :reduce[multiply<accumulator>]
→ Empty initial value is treated as 0 by mathematical operators
=1 =2 =3 +[reduce<multiply-input>,[1]]
→ Setting initial value is sometimes necessary for correct results