Thanks Ken that looks great.  What is the next step?  Can this change
make into the next version of prototype?

- Dimitri

On Mar 28, 12:07 pm, Ken Snyder <[EMAIL PROTECTED]> wrote:
> koozdra wrote:
> > Thanks for the quick reply.
>
> > I ran some tests in ruby:
>
> > array = [1,2,3,4]
> > p array.insert(-3, 'one', 'two')
> > array = [1,2,3,4]
> > p array.insert(-1, 'one', 'two')
> > array = [1,2,3,4]
> > p array.insert(0, 'one', 'two')
> > array = [1,2,3,4]
> > p array.insert(1, 'one', 'two')
> > array = [1,2,3,4]
> > p array.insert(10, 'one', 'two')
>
> > output:
> > [1, 2, "one", "two", 3, 4]
> > [1, 2, 3, 4, "one", "two"]
> > ["one", "two", 1, 2, 3, 4]
> > [1, "one", "two", 2, 3, 4]
> > [1, 2, 3, 4, nil, nil, nil, nil, nil, nil, "one", "two"]
>
> > when the index is negative and of greater length than the array, ruby
> > throws an index out of bounds exception.
>
> Based on that info, below is a revised method.  On FF2 it seems to behave the 
> same as your Ruby examples.  I made an index of -5 in your example work the 
> same as 0.
>
> - Ken
>
> Array.prototype.insert = function() {
>   var args = $A(arguments), index = args.shift();
>   index += index < 0 ? this.length : 0;
>   if (index > this.length || index < -1)
>     throw new Error('Index out of bounds.');
>   args = [this[index], 0].concat(args);
>   Array.prototype.splice.apply(this, args);}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to