Already checked the code, thanks anyway! -- Roman
On Tue, Dec 15, 2009 at 3:31 PM, Aaron Newton <[email protected]> wrote: > Yes > > > -Aaron > > Sorry for any typos. Big fingers , tiny buttons. > > On Dec 15, 2009, at 5:26 AM, Roman Land <[email protected]> wrote: > > Steve, your right, wrong choice of words, I meant *defined indexes* :) > > Ah, love being right! =p > > Thanks Ryan, but the first element is at index 1 by design, thats the way > it should work. > > Thanks Aaron! BTW, didnt check the code but this covers $each as well? > (99.9% that it would but just checking) > > > On Tue, Dec 15, 2009 at 7:05 AM, Aaron Newton < <[email protected]> > [email protected]> wrote: > >> >> <https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array/ForEach> >> https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array/ForEach >> >> It would appear that our implementation of forEach is, indeed, incorrect. >> >> >> -Aaron >> >> Sorry for any typos. Big fingers , tiny buttons. >> >> On Dec 14, 2009, at 8:56 PM, Roman Land < <[email protected]> >> [email protected]> wrote: >> >> For one, Firefox doesnt include it, neither does Chrome, but IE does, you >> could be right, and you could be wrong, it really depends on who is >> implementing the foreach loop, either way I am with FF Chrome etc, foreach >> should iterate over *existing elements only!* >> >> On Tue, Dec 15, 2009 at 3:48 AM, Steve Onnis < >> <[email protected]><[email protected]> >> [email protected]> wrote: >> >>> even though it may be empty or null, the array position is still there >>> so why wouldnt it be included in the each loop? >>> >>> ------------------------------ >>> *From:* Roman Land [mailto: <[email protected]><[email protected]> >>> [email protected]] >>> *Sent:* Tuesday, 15 December 2009 12:42 PM >>> >>> *To:* <[email protected]><[email protected]> >>> [email protected] >>> *Subject:* Re: [Moo] Found a very annoying bug.. >>> >>> if you read the literal function name - for*each* - makes you expect >>> they function to run over existing array banks only. >>> That is the only part I am arguing about, I dont see how is my array >>> "dirty" for not having an element in position 0. >>> >>> On Tue, Dec 15, 2009 at 3:17 AM, Steve Onnis < >>> <[email protected]><[email protected]> >>> [email protected]> wrote: >>> >>>> i would disagree >>>> >>>> if you say "hey here is an array, can you loop over it for me?" then it >>>> is doing what you ask it to do...its not the functions fault that you hand >>>> it dirty data. its up to you as a programmer to deal with the data >>>> correctly. >>>> >>>> ------------------------------ >>>> *From:* Roman Land [mailto: <[email protected]><[email protected]> >>>> [email protected]] >>>> *Sent:* Tuesday, 15 December 2009 11:53 AM >>>> >>>> *To:* <[email protected]><[email protected]> >>>> [email protected] >>>> *Subject:* Re: [Moo] Found a very annoying bug.. >>>> >>>> Thats true, it does look better. >>>> >>>> About who's fault it is, I would expect a "foreach" loop not to try to >>>> itterate over an non existant element (at position 0 or whatever), the fact >>>> I am trying to use this nonexistent element later is not so evil IMO :) >>>> >>>> for ( var thought in thoughts) { if (thought) alert("I think, therefor I >>>> exist!") } >>>> >>>> On Tue, Dec 15, 2009 at 2:32 AM, Aaron Newton < >>>> <[email protected]><[email protected]> >>>> [email protected]> wrote: >>>> >>>>> this is by far the better option. >>>>> >>>>> it's not IE's fault that you are trying to reference something that >>>>> doesn't exist. This isn't a bug in IE or MooTools. >>>>> >>>>> >>>>> On Mon, Dec 14, 2009 at 7:09 PM, Barry van Oudtshoorn >>>>> <<[email protected]><[email protected]> >>>>> [email protected]> wrote: >>>>> >>>>>> 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]><[email protected]> >>>>>> [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]><[email protected]> >>>>>>> [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]><[email protected]> >>>>>>>> [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. >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> --- >>>> "Make everything as simple as possible, but not simpler." >>>> >>>> - Albert Einstein >>>> >>>> >>> >>> >>> -- >>> --- >>> "Make everything as simple as possible, but not simpler." >>> >>> - Albert Einstein >>> >>> >> >> >> -- >> --- >> "Make everything as simple as possible, but not simpler." >> >> - Albert Einstein >> >> > > > -- > --- > "Make everything as simple as possible, but not simpler." > > - Albert Einstein > > -- --- "Make everything as simple as possible, but not simpler." - Albert Einstein
