Nice catch. The reason we are passing 2 arguments is JavaScript future
compatibility: the JS 1.6 stuff already implemented in Firefox is likely to
be a part of ECMAScript. Actually, Firefox passes 3 arguments:

What you stumbled upon could be pretty confusing at first even for a
seasoned developer, but I don't think there's much we can do about it. But
you'll find that iteration combined with DOM traversal methods could be
easily solved with better CSS selectors; for instance $$('[type=radio] +
label') ... We could try and educate people towards that.

On Dec 4, 2007 5:23 PM, John-David Dalton <[EMAIL PROTECTED]>

> Hi guys,
> This is really not a bug but I thought I would bring it to your
> attention.
> $$('[type=radio]').map(function(el){return}); // => [label,
> label]
> $$('[type=radio]').map(; // => [label, undefined]
> The "map" method is passing 2 params to the iterator.
> This makes the go nuts cause its second param is used
> for sibling offset.
> In PHP array_map only passes the "value" and not the index.
> It makes since for Enumerable.each() to send both, but I think map
> should be left to just the value. I image there are more cases where
> this sort or error would occur.
> >

You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at

Reply via email to