artdaq_node_server  v1_00_09
 All Classes Namespaces Files Variables Pages
transform.js
1 var arrayEach = require('./_arrayEach'),
2  baseCreate = require('./_baseCreate'),
3  baseForOwn = require('./_baseForOwn'),
4  baseIteratee = require('./_baseIteratee'),
5  getPrototype = require('./_getPrototype'),
6  isArray = require('./isArray'),
7  isBuffer = require('./isBuffer'),
8  isFunction = require('./isFunction'),
9  isObject = require('./isObject'),
10  isTypedArray = require('./isTypedArray');
11 
42 function transform(object, iteratee, accumulator) {
43  var isArr = isArray(object),
44  isArrLike = isArr || isBuffer(object) || isTypedArray(object);
45 
46  iteratee = baseIteratee(iteratee, 4);
47  if (accumulator == null) {
48  var Ctor = object && object.constructor;
49  if (isArrLike) {
50  accumulator = isArr ? new Ctor : [];
51  }
52  else if (isObject(object)) {
53  accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
54  }
55  else {
56  accumulator = {};
57  }
58  }
59  (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
60  return iteratee(accumulator, value, index, object);
61  });
62  return accumulator;
63 }
64 
65 module.exports = transform;