Bug Tracker

Opened 12 years ago

Closed 11 years ago

#9944 closed enhancement (plugin)

Pass new array as third argument to jQuery.grep and jQuery.map callbacks

Reported by: anonymous Owned by:
Priority: low Milestone: None
Component: misc Version: 1.6.2
Keywords: needsreview Cc:
Blocked by: Blocking:


Providing the new Array being constructed via jQuery.grep() to the callback provided would allow inquiry into the new Array that could be useful when determining the return value.



retVal = !!callback( elems[ i ], i );


       // added new Array as arg-----v
retVal = !!callback( elems[ i ], i, ret );

Possible usage example:

var arr = 
    $('div').map(function() { return $(this).attr('rel'); } ).get(),
    function( v, i, arr ) { return $.inArray( v, arr ) === -1; } // exclude dupes

jsfiddle: http://jsfiddle.net/b7hDr/

I would also be inclined to suggest this for jQuery.map():

var arr = 
$.map($('div'), function( v, i, arr ) { 
    var rel = $(v).attr('rel'); 
    return $.inArray( rel, arr ) === -1 ? rel : void 0;

jsfiddle: http://jsfiddle.net/b7hDr/1/

...although I don't know if it would interfere with the internal arg parameter.


     // make room for "ret"?------v
value = callback( elems[ i ], i, ret, arg );


     // make room for "ret"?----------v
value = callback( elems[ key ], key, ret, arg );

Change History (2)

comment:1 Changed 11 years ago by addyosmani

Component: unfiledmisc
Keywords: needsreview added
Priority: undecidedlow
Status: newopen

I don't have any particular opinions on this enhancement, but I'm moving this to either the vote queue or for further review.

comment:2 Changed 11 years ago by dmethvin

Resolution: plugin
Status: openclosed

Sorry but we don't need to complicate this highly-used code for edge cases. It would be better to do this as a plugin with the additional semantics.

Note: See TracTickets for help on using tickets.