diff options
-rw-r--r-- | src/core.js | 2 | ||||
-rw-r--r-- | test/unit/core.js | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/core.js b/src/core.js index 6ab06e15b..7eb0e0b11 100644 --- a/src/core.js +++ b/src/core.js @@ -720,7 +720,7 @@ jQuery.extend({ i = 0, length = elems.length, // 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 ) ) ; + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; // Go through the array, translating each of the items to their if ( isArray ) { diff --git a/test/unit/core.js b/test/unit/core.js index 7690756d9..75d3e0e2c 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -653,7 +653,7 @@ test("first()/last()", function() { }); test("map()", function() { - expect(7); + expect(8); same( jQuery("#ap").map(function(){ @@ -694,6 +694,12 @@ test("map()", function() { }); equals( mapped.length, scripts.length, "Map an array(-like) to a hash" ); + var nonsense = document.getElementsByTagName("asdf"); + var mapped = jQuery.map( nonsense, function( v, k ){ + return v; + }); + equals( mapped.length, nonsense.length, "Map an empty array(-like) to a hash" ); + var flat = jQuery.map( Array(4), function( v, k ){ return k % 2 ? k : [k,k,k];//try mixing array and regular returns }); |