diff options
Diffstat (limited to 'tools/eslint/node_modules/lodash/transform.js')
-rw-r--r-- | tools/eslint/node_modules/lodash/transform.js | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/tools/eslint/node_modules/lodash/transform.js b/tools/eslint/node_modules/lodash/transform.js index f438ed8fed..d755a15489 100644 --- a/tools/eslint/node_modules/lodash/transform.js +++ b/tools/eslint/node_modules/lodash/transform.js @@ -4,6 +4,7 @@ var arrayEach = require('./_arrayEach'), baseIteratee = require('./_baseIteratee'), getPrototype = require('./_getPrototype'), isArray = require('./isArray'), + isBuffer = require('./isBuffer'), isFunction = require('./isFunction'), isObject = require('./isObject'), isTypedArray = require('./isTypedArray'); @@ -39,22 +40,23 @@ var arrayEach = require('./_arrayEach'), * // => { '1': ['a', 'c'], '2': ['b'] } */ function transform(object, iteratee, accumulator) { - var isArr = isArray(object) || isTypedArray(object); - iteratee = baseIteratee(iteratee, 4); + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + iteratee = baseIteratee(iteratee, 4); if (accumulator == null) { - if (isArr || isObject(object)) { - var Ctor = object.constructor; - if (isArr) { - accumulator = isArray(object) ? new Ctor : []; - } else { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - } else { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { accumulator = {}; } } - (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { return iteratee(accumulator, value, index, object); }); return accumulator; |