What about doing something like

$each(arr, function(item) {
  if (item && item.foo) item.foo();
})

It's more robust and will mean that you can start indexing your arrays from whatever you want.

On 15/12/09 08:04, Roman Land wrote:
Indeed this code would cause an issue for me, since the issue is not due to referencing of the nonexistent item, rather inside the loop I do something like:

$each(arr, function(item, i) {
   item.foo(); // this will throw an error on undefiled object and stop JS
})

My workaround by the way is to check weather i == 0 (this is a special array I use where I normally start at position 1).

FF's implementation does actually jump over position 0 - starting at 1, that would be logical interpretation of "foreach" vs "for (i =0 ; i < smt.length ; i++)" - where I tell him to begin at position 0 explicitly.

Cheers
-- Roman

On Tue, Dec 15, 2009 at 1:18 AM, Aaron Newton <[email protected] <mailto:[email protected]>> wrote:

    Here is the code for forEach, implemented into browsers that do
    not implement it themselves:

    forEach: function(fn, bind){
    for (var i = 0, l = this.length; i < l; i++) fn.call(bind,
    this[i], i, this);
    }

    as you can see, it loops over each item and calls your function,
    passing the array's value at i. This is undefined for your zero
    value. I don't know where IE would freak out on this (though it
    doesn't surprise me that it might). The code above references
    yourArray[index] that shouldn't throw an error...

    Aaron

    On Mon, Dec 14, 2009 at 12:31 PM, Roman Land <[email protected]
    <mailto:[email protected]>> wrote:

        Lolz on the kindly:)

        Paul, this site is meant to work on all browsers, I currently
        have a
        work around, this behavior is undesired despite it's roots
        being in ie
        implementation of foreach.

        Cheers, Roman

        On 14/12/2009, at 18:28, Paul Saukas <[email protected]
        <mailto:[email protected]>> wrote:


        > Roman ,
        >
        >     I believe that is an IE issue . I have no problem
        running your
        > example on IE8 . It just kindly spits undefined out in place
        of the
        > missing element 0 if i have it display the items, If i do
        the keys
        > then IE shows 01234 and ff 1234. What version of IE are you
        using ?





--
---
"Make everything as simple as possible, but not simpler."

- Albert Einstein



--
Not sent from my iPhone.

Reply via email to