Hi,

That's because you're modifying the array's contents within the
iterator, which is pretty much a no-no.  (You can modify the things
each array element points to, but changing the actual content of the
array is problematic.)  Just glancing at the #_each method in Array
(which is what #each calls) in prototype.js would reveal why:

    _each: function(iterator) {
        for (var i = 0, length = this.length; i < length; i++)
            iterator(this[i]);
    },

So #each probably isn't the best way to approach this.  Even if it
were, re-splicing the array every time is also going to be seriously
inefficient.

The good news is that all you need to do is set the array's length to
0.  You can do that directly, or call the tempting Prototype
Array#clear method:
http://www.prototypejs.org/api/array/clear

Setting the array's length automatically deletes any properties that
the new length would leave out; see the ECMA spec, Section 15.4:
http://www.ecma-international.org/publications/standards/Ecma-262.htm

Hope this helps,
--
T.J. Crowder
tj / crowder software / com

On Jun 23, 4:13 am, mocambo <[EMAIL PROTECTED]> wrote:
> I'm trying to remove all objects and object references from myArray.
> But code below brakes before  last iteration - myArray contains still
> one element.
>
> myArray.each( function(content, index) {
>     delete content; myArray.splice(index,1);
>
> });
>
> Is there any solution, how I can decrease this array inside #each ?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" group.
To post to this group, send email to rubyonrails-spinoffs@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to