From 2d3edb88f0bfda175082a2f55cf3cda980e5e489 Mon Sep 17 00:00:00 2001 From: Raymond May Jr Date: Mon, 19 Mar 2012 19:08:36 -0500 Subject: [PATCH 1/3] _.size ludicrous speed improvement --- underscore.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/underscore.js b/underscore.js index 21a45c0d9..ba2ee7600 100644 --- a/underscore.js +++ b/underscore.js @@ -309,7 +309,11 @@ // Return the number of elements in an object. _.size = function(obj) { - return _.toArray(obj).length; + if (_.isArray(obj)) { + return obj.length; + } else { + return _.keys(obj).length; + } }; // Array Functions From 5827e4a40a5a30f7a00b2bd1ab01111510e8a2d4 Mon Sep 17 00:00:00 2001 From: Raymond May Jr Date: Mon, 19 Mar 2012 19:10:59 -0500 Subject: [PATCH 2/3] _.size ludicrous speed improvement - formatting --- underscore.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/underscore.js b/underscore.js index ba2ee7600..6f3ac8f47 100644 --- a/underscore.js +++ b/underscore.js @@ -309,11 +309,11 @@ // Return the number of elements in an object. _.size = function(obj) { - if (_.isArray(obj)) { - return obj.length; - } else { - return _.keys(obj).length; - } + if (_.isArray(obj)) { + return obj.length; + }else{ + return _.keys(obj).length; + } }; // Array Functions From 4c2a85f9c5f38ce466e9b827c2f7e3024196b579 Mon Sep 17 00:00:00 2001 From: Raymond May Jr Date: Tue, 20 Mar 2012 09:31:50 -0500 Subject: [PATCH 3/3] size enhancement as ternary and _.size(arr) test case --- test/collections.js | 1 + underscore.js | 6 +----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/test/collections.js b/test/collections.js index 71ef5a71c..18b242769 100644 --- a/test/collections.js +++ b/test/collections.js @@ -275,6 +275,7 @@ $(document).ready(function() { test('collections: size', function() { equal(_.size({one : 1, two : 2, three : 3}), 3, 'can compute the size of an object'); + equal(_.size([1, 2, 3]), 3, 'can compute the size of an array'); }); }); diff --git a/underscore.js b/underscore.js index 6f3ac8f47..c699c991b 100644 --- a/underscore.js +++ b/underscore.js @@ -309,11 +309,7 @@ // Return the number of elements in an object. _.size = function(obj) { - if (_.isArray(obj)) { - return obj.length; - }else{ - return _.keys(obj).length; - } + return _.isArray(obj) ? obj.length : _.keys(obj).length; }; // Array Functions