4.17.11
3.10.1
2.4.2
1.3.1

_.transform(object, [iteratee=_.identity], [accumulator])

An alternative to _.reduce; this method transforms object to a new accumulator object which is the result of running each of its own enumerable string keyed properties thru iteratee, with each invocation potentially mutating the accumulator object. If accumulator is not provided, a new object with the same [[Prototype]] will be used. The iteratee is invoked with four arguments: (accumulator, value, key, object). Iteratee functions may exit iteration early by explicitly returning false.

Since

1.3.0

Arguments

argument
object
[iteratee=_.identity]
[accumulator]
type
Object
Function
*
description
The object to iterate over.
The function invoked per iteration.
The custom accumulator value.

Returns

(array)

Example

_.transform(
  [2, 3, 4],
  function (result, n) {
    result.push((n *= n));
    return n % 2 == 0;
  },
  []
);
// => [4, 9]

_.transform(
  { a: 1, b: 2, c: 1 },
  function (result, value, key) {
    (
      result[value] ||
      (result[value] = [])
    ).push(key);
  },
  {}
);
// => { '1': ['a', 'c'], '2': ['b'] }
_.transform(
  [2, 3, 4],
  function (result, n) {
    result.push((n *= n));
    return n % 2 == 0;
  },
  []
);
// => [4, 9]

_.transform(
  { a: 1, b: 2, c: 1 },
  function (result, value, key) {
    (result[value] || (result[value] = [])).push(key);
  },
  {}
);
// => { '1': ['a', 'c'], '2': ['b'] }