From 2dc203332bf67ff2d5ac369c15d9a18805b7e6ed Mon Sep 17 00:00:00 2001 From: Ryan W Tenney Date: Tue, 5 Oct 2010 21:22:37 -0400 Subject: [PATCH] Changed `reduceRight` to avoid unnecessarily cloning an array. `toArray` returns the first argument unmodified if it passes `isArray`. So if `obj` passes `isArray`, call `slice` on it directly, otherwise use `toArray`. --- underscore.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/underscore.js b/underscore.js index 3580b2e94..88042c84e 100644 --- a/underscore.js +++ b/underscore.js @@ -110,7 +110,7 @@ if (context) iterator = _.bind(iterator, context); return obj.reduceRight(iterator, memo); } - var reversed = _.clone(_.toArray(obj)).reverse(); + var reversed = (_.isArray(obj) ? obj.slice() : _.toArray(obj)).reverse(); return _.reduce(reversed, iterator, memo, context); };