1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- var arrayEach = require('./_arrayEach'),
- baseCreate = require('./_baseCreate'),
- baseForOwn = require('./_baseForOwn'),
- baseIteratee = require('./_baseIteratee'),
- getPrototype = require('./_getPrototype'),
- isArray = require('./isArray'),
- isBuffer = require('./isBuffer'),
- isFunction = require('./isFunction'),
- isObject = require('./isObject'),
- isTypedArray = require('./isTypedArray');
- function transform(object, iteratee, accumulator) {
- var isArr = isArray(object),
- isArrLike = isArr || isBuffer(object) || isTypedArray(object);
- iteratee = baseIteratee(iteratee, 4);
- if (accumulator == null) {
- var Ctor = object && object.constructor;
- if (isArrLike) {
- accumulator = isArr ? new Ctor : [];
- }
- else if (isObject(object)) {
- accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
- }
- else {
- accumulator = {};
- }
- }
- (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
- return iteratee(accumulator, value, index, object);
- });
- return accumulator;
- }
- module.exports = transform;
|