]> source.dussan.org Git - jquery.git/commitdiff
jQuery.map to conform with style guidelines - improved size/DRY code
authorDan Heberden <danheberden@gmail.com>
Mon, 21 Mar 2011 15:39:53 +0000 (08:39 -0700)
committerDan Heberden <danheberden@gmail.com>
Mon, 21 Mar 2011 15:39:53 +0000 (08:39 -0700)
src/core.js

index 1077d38cec07426dcf51d75ba46bb154de079d14..a0dd7b5b3b7946a3bb6e20365eb62005bc0cf358 100644 (file)
@@ -706,29 +706,31 @@ jQuery.extend({
 
        // arg is for internal usage only
        map: function( elems, callback, arg ) {
-               var ret = [],
-                       value,
+               var ret = [], value, i = 0,
                        length = elems.length,
                        // same object detection used in jQuery.each, not full-proof but very speedy.
                        isObj = length === undefined;
-
-               if ( isObj ) {
-                       for ( key in elems ) {
-                               value = callback( elems[ key ], key, arg );
-
+                       
+                       // the work for the loops - run elems[x] through callback
+                       inLoop = function( key ) {
+                         value = callback( elems[ key ], key, arg );
+                         
                                if ( value != null ) {
                                        ret[ ret.length ] = value;
                                }
                        }
-               } else {
-                       // Go through the array, translating each of the items to their
-                       // new value (or values).
-                       for ( var i = 0; i < length; i++ ) {
-                               value = callback( elems[ i ], i, arg );
 
-                               if ( value != null ) {
-                                       ret[ ret.length ] = value;
-                               }
+    // Go thorugh every key on the object
+               if ( isObj ) {
+                       for ( key in elems ) {
+                         inLoop( key );
+                       }
+               
+               // Go through the array, translating each of the items to their
+               // new value (or values).
+               } else {                        
+                       for ( ; i < length; i++ ) {
+                               inLoop( i );
                        }
                }