(function(){
function jquery_map( elems, callback ) {
var ret = [];
for ( var i = 0, length = elems.length; i < length; i++ ) {
var value = callback( elems[ i ], i );
if ( value !== null && value != undefined ) {
if ( value.constructor != Array )
value = [ value ];
ret = ret.concat( value );
}
}
return ret;
};
function my_map( elems, callback ) {
var ret = [], value;
for ( var i = 0, length = elems.length; i < length; ++i ) {
value = callback( elems[ i ], i );
if ( value != null )
ret[ ret.length ] = value;
}
return ret.concat.apply( [], ret );
};
var array = Array(50),
map = function( v, i ){
var t = i % 3;
return t == 0 ? null :
t == 1 ? i :
[ i, i, i, i ];
};
Benchmarker().compare( { times:100, attempts:5, wait:1000 }, {
jquery_map:function(){
jquery_map( array, map );
},
my_map:function(){
my_map( array, map );
}
});
/*
alert( jquery_map( array, map ).join('') );
alert( my_map( array, map ).join('') );
/* */
})();