On Thu, Sep 29, 2011 at 12:09 AM, Rick Waldron <[email protected]>wrote:
> > > On Wed, Sep 28, 2011 at 11:05 PM, Dean Landolt <[email protected]>wrote: > >> >> >> On Wed, Sep 28, 2011 at 10:06 PM, Mike Shaver <[email protected]>wrote: >> >>> On Wed, Sep 28, 2011 at 9:11 PM, Brendan Eich <[email protected]> >>> wrote: >>> > No worries, array extras are a great addition, we just need to keep >>> rolling. >>> >>> Oh, no offense taken. I just meant to say that there may be >>> consistency-with-existing-pattern reasons to prefer one hole behaviour >>> over another, is all. >>> >> >> >> Another reason to prefer the current hole-hopping behavior for array >> extras is that it's currently the *only* way to get any efficiency >> advantage sparse arrays. So regardless of rationale, it's strictly more >> featureful and almost certainly the intended behavior if, as a developer, >> you're aware of holes. >> >> But to reiterate the point I made earlier, in order for libraries to take >> complete ownership of looping constructs we need a better way to detect >> holes in userland -- something that can be optimized. I was trying to think >> of a way to overload Array.prototype.indexOf and lastIndexOf but since we >> don't have a type for holes this isn't really feasible (I'd thought of using >> NaN as a sigil here as it's otherwise untestable in indexOf, but this would >> be wrong on so many levels). >> > > Holes can be detected and skipped by using the "in" operator... > > var array = [ 1, , 3, , 5 ]; > > for ( var i = 0; i < array.length; i++ ) { > // Skip accessing in sparse arrays > if ( i in array ) { > console.log( array[i] ); > } > } > > > Sorry, that is to say you could do the reverse to detect and access their index positions > > >> Regardless of where it goes (on Array, Array.prototype, or in a system >> module), all we really need is something like a function that takes an index >> and direction and returns the next hole's start index and length (or end >> index). I'll put together a proposal if this isn't too controversial. >> >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> >> >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

