Skip to content
Permalink
Browse files

Improve speed of $.map with object support (-5% previous speed) and i…

…mprove .length detection
  • Loading branch information...
danheberden committed Apr 5, 2011
1 parent 00dd601 commit c72371f71474cbd6e2318c8ad909a2f92dcb915c
Showing with 11 additions and 12 deletions.
  1. +7 −8 src/core.js
  2. +1 −1 src/sizzle
  3. +1 −1 test/qunit
  4. +2 −2 test/unit/core.js
@@ -704,16 +704,15 @@ jQuery.extend({
return ret;
},

// arg is for internal usage only
// arg is for internal usage only
map: function( elems, callback, arg ) {
var value, ret = [],
i = 0,
i = 0,
length = elems.length,
// process .length if it's just an object member
isArray = length !== undefined && ( elems[ length - 1 ] || jQuery.isArray( elems ) );
// jquery objects are treated as arrays
isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || jQuery.isArray( elems ) ) ;

// Go through the array, translating each of the items to their
// new value (or values).

This comment has been minimized.

Copy link
@Krinkle

Krinkle Sep 22, 2013

Member

This cut off the sentence "translating each of the items to their ..." and is still in the code base today!

This comment has been minimized.

Copy link
@Krinkle

Krinkle Sep 22, 2013

Member

Fixed in pull #1379.

if ( isArray ) {
for ( ; i < length; i++ ) {
value = callback( elems[ i ], i, arg );
@@ -723,8 +722,8 @@ jQuery.extend({
}
}

// Go thorugh every key on the object,
} else {
// Go thorugh every key on the object,
} else {
for ( key in elems ) {
value = callback( elems[ key ], key, arg );

Submodule sizzle updated from ef1927 to f12b93
Submodule qunit updated from cc8460 to d404fa
@@ -625,7 +625,7 @@ test("map()", function() {
q("ap","ap","ap"),
"Single Map"
);

//for #2616
var keys = jQuery.map( {a:1,b:2}, function( v, k ){
return k;
@@ -636,7 +636,7 @@ test("map()", function() {
return v;
});
equals( values.join(""), "12", "Map the values from a hash to an array" );

// object with length prop
var values = jQuery.map( {a:1,b:2, length:3}, function( v, k ){
return v;

0 comments on commit c72371f

Please sign in to comment.
You can’t perform that action at this time.