reduceRight — GTM Variable Template for Array
reduceRight EXTENDED Array
Reduces an array from right to left using a callback function and an optional initial value.
Examples
Reverse concatenation
INPUT
Array To Reduce: ['a', 'b', 'c', 'd']
Reducer Function: function(acc, val) { return acc + val; }
Initial Value:
Use Initial Value: true
Reducer Function: function(acc, val) { return acc + val; }
Initial Value:
Use Initial Value: true
OUTPUT
dcba
Sum from right
INPUT
Array To Reduce: [1, 2, 3, 4, 5]
Reducer Function: function(acc, val) { return acc + val; }
Initial Value: undefined
Use Initial Value: false
Reducer Function: function(acc, val) { return acc + val; }
Initial Value: undefined
Use Initial Value: false
OUTPUT
15
GTM Configuration
This is what you'll see when you open this variable in Google Tag Manager. Hover the icons for details.
reduceRight
Array To Reduce
💾 The array to reduce from right to left.
Supported formats:
✓ Array
Supported formats:
✓ Array
Reducer Function
💾 A reducer function of the form (accumulator, currentValue) => nextAccumulator.
Supported formats:
✓ Function
Supported formats:
✓ Function
Initial Value
💾 An optional initial value for the accumulator.
Supported formats:
✓ Any
Supported formats:
✓ Any
Use Initial Value
💾 Whether to use the initial value.
Options:
✓ Yes/No
Options:
✓ Yes/No
Input Setup
Input Function (optional)
⚙️ Optional pre-processing function applied to the array before internal logic (e.g., filter elements, sort array). Internal transformations will still apply afterward.
Result Handling
Output Function (optional)
⚙️ Optional function to apply to the result before returning it (e.g., val => Math.round(val), val => val.toString() for string conversion). Useful for chaining transformations on the output.
Array To Reduce array
💡 Type any text to see the result update live
🎯 Using special value — click input to type instead
Test with:
Falsy
Truthy
Reducer Function function
Initial Value any
🔗 Result Handling — Chain Variables
Chain apply-mode variables to the output. Each variable receives the result of the previous one.
reduceRight()
Related Variables
Same category: Array
Under the Hood
📜 View Implementation Code
/**
* Reduces an array from right to left using a callback function and an optional initial value.
*
* @param {Array} data.arr - The array to reduce.
* @param {Function} data.fnc - A reducer function of the form (accumulator, currentValue) => nextAccumulator.
* @param {*} data.ini - An optional initial value for the accumulator.
* @param {boolean} data.use - Whether to use the initial value.
* @param {Function|string} [data.out] - Optional output handler: function to transform result or string with format.
*
* Direct-mode specific parameters:
* @param {Function} [data.pre] - Optional pre-processor function to transform arr before reducing.
*
* @returns {*|undefined} The final accumulated result from the right-to-left reduce operation. Returns undefined if the input is not a valid array or the callback is not a function.
*
* @framework ggLowCodeGTMKit
*/
const getType = require('getType');
const reduceRight = function(array, callback, initialValue, useInitial) {
if (getType(array) !== 'array' || typeof callback !== 'function') {
return undefined;
}
return useInitial ? array.reduceRight(callback, initialValue) : array.reduceRight(callback);
};
const safeFunction = fn => typeof fn === 'function' ? fn : x => x;
const out = safeFunction(data.out);
// ===============================================================================
// reduceRight - Direct mode
// ===============================================================================
const applyCast = (castFn, value) => safeFunction(castFn)(value);
const processedArray = applyCast(data.pre, data.arr);
return out(reduceRight(processedArray, data.fnc, data.ini, data.use));
// ===============================================================================
// reduceRight(...) – Apply Mode
// ===============================================================================
/*
return function(array, callback, initialValue, useInitial) {
callback = data.rp1 ? data.fnc : callback;
return out(reduceRight(array, callback, data.ini, data.use));
};
*/🧪 View Test Scenarios (11 tests)
✅ '[example] Reverse concatenation'
✅ Subtract numbers from right to left with initial value
✅ Build array from right to left with initial value
✅ Flatten nested arrays from right to left with initial value
✅ '[example] Sum from right'
✅ Single element array with initial value - should return combined result
✅ Single element array without initial value - should return the element
✅ Empty array with initial value - should return initial value
✅ Non-function callback - should return undefined
✅ Compose functions from right to left
✅ Build nested structure from right to left with initial value