[NaN].indexOf(NaN) === -1 VS Object.is(NaN, NaN)
Herby Vojčík
herby at mailbox.sk
Thu Jun 14 05:25:33 PDT 2012
Andrea Giammarchi wrote:
> just in case ... this is my internal function
>
> // var is = Object.is || properShim
> // var indexOf = [].indexOf || shortShim
> // var i;
> function betterIndexOf(value) {
> if (value != value || value === 0) {
> for (i = this.length; i-- && !is(this[i], value););
I always has the impression that indexOf is firstIndexOf not
lastIndexOf... sometimes it matters.
Herby
> } else {
> i = indexOf.call(this, value);
> }
> return i;
> }
>
> maybe somebody else should implement something similar to avoid N
> Object.is(a, b) checks within the loop ...
>
> cheers
>
> On Thu, Jun 14, 2012 at 1:59 PM, Andrea Giammarchi
> <andrea.giammarchi at gmail.com <mailto:andrea.giammarchi at gmail.com>> wrote:
>
> This is basically what I am doing except I find Array#indexOf as it
> is pointless ... or better, something that should be fixed in the
> next version of ECMAScript.
>
> Right now I am feature detecting the inconsistent behavior ... but a
> feature detection that will never possibly return true is also
> pointless ... thanks in any case :-)
>
> br
>
>
> On Thu, Jun 14, 2012 at 12:41 PM, Mark S. Miller <erights at google.com
> <mailto:erights at google.com>> wrote:
>
> Please replace your use of indexOf in your collection
> implementations
> instead. If indexOf is more efficient than one written in JS using
> Object.is, then use the fast one when the argument is anything other
> than NaN, 0, and -0.
>
> On Thu, Jun 14, 2012 at 3:24 PM, Andrea Giammarchi
> <andrea.giammarchi at gmail.com
> <mailto:andrea.giammarchi at gmail.com>> wrote:
> > Hello everybody,
> > I am not sure about the status of this subject but I find
> quite
> > inconsistent the fact we cannot trust Array#indexOf when it
> comes to NaN ...
> > I am updating my es6-collections shim accordingly with what
> Paul Millr said:
> > my shim does not consider NaN as a valid key, being unable to
> find a match
> > through indexOf, so each NaN key will result into a new one
> for both Map and
> > Set ( broken WeakMap too )
> >
> > I wonder if in the next future Array#indexOf will use
> internally Object.is
> > to compare values or if I have to use my own function to loop
> over all
> > values and do this kind of comparison.
> >
> > Any thought on this will be appreciated and apologies if this
> has been
> > discussed already ( so a quick answer on "how it's going to
> be" would be
> > more than enough )
> >
> > Best Regards,
> > Andrea Giammarchi
> >
> > _______________________________________________
> > es-discuss mailing list
> > es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
> > https://mail.mozilla.org/listinfo/es-discuss
> >
>
>
>
> --
> Cheers,
> --MarkM
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
More information about the es-discuss
mailing list