Connecting Tech Pros Worldwide Forums | Help | Site Map

array.slice() question

Christopher Benson-Manica
Guest
 
Posts: n/a
#1: Dec 6 '05
Is array.slice() guaranteed to return a zero-length array if the first
argument is greater than the length of the array? Or is it allowed to
throw an exception?

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.

Michael Winter
Guest
 
Posts: n/a
#2: Dec 6 '05

re: array.slice() question


On 06/12/2005 16:58, Christopher Benson-Manica wrote:
[color=blue]
> Is array.slice() guaranteed to return a zero-length array if the
> first argument is greater than the length of the array?[/color]

In a conforming implementation of ECMA-262, yes. I can't say that I've
ever called it with out-of-bounds arguments, though.
[color=blue]
> Or is it allowed to throw an exception?[/color]

Built-in methods only throw exceptions in very specific and
unrecoverable circumstances. For instance, a syntax error in an eval
call, or a RegExp or Function constructor call, or applying non-generic
prototyped methods (like valueOf) to instances of different objects.
Arguments are usually normalized to values that make sense, especially
those that can be bounded to range.

Mike

--
Michael Winter
Prefix subject with [News] before replying by e-mail.
Christopher Benson-Manica
Guest
 
Posts: n/a
#3: Dec 6 '05

re: array.slice() question


Michael Winter <m.winter@blueyonder.co.uk> wrote:
[color=blue]
> In a conforming implementation of ECMA-262, yes. I can't say that I've
> ever called it with out-of-bounds arguments, though.[/color]

I'm creating a copy of an array with one item removed, like so:

var copyWithItemRemoved=someArray.slice( 0, idx ).concat( someArray.slice(idx+1) );

Am I missing a better way to do this? (See my next post, I will ask
in a new topic.)

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.
Evertjan.
Guest
 
Posts: n/a
#4: Dec 6 '05

re: array.slice() question


Christopher Benson-Manica wrote on 06 dec 2005 in comp.lang.javascript:
[color=blue]
> I'm creating a copy of an array with one item removed, like so:
>
> var copyWithItemRemoved=someArray.slice( 0, idx ).concat(
> someArray.slice(idx+1) );
>
> Am I missing a better way to do this? (See my next post, I will ask
> in a new topic.)
>[/color]

var theRemevedItem = someArray.splice(idx, 1)
var copyWithItemRemoved = someArray

--
Evertjan.
The Netherlands.
(Replace all crosses with dots in my emailaddress)

Christopher Benson-Manica
Guest
 
Posts: n/a
#5: Dec 6 '05

re: array.slice() question


Evertjan. <exjxw.hannivoort@interxnl.net> wrote:
[color=blue]
> var theRemevedItem = someArray.splice(idx, 1)
> var copyWithItemRemoved = someArray[/color]

That isn't what I want, though - splice also modifies the original
array, which I am explicitly trying to avoid. I could, of course, do

var copyWithItemRemoved=someArray.slice( 0 );
copyWithItemRemoved.splice( idx, 1 );

but I'm not enthusiastic.

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.
Closed Thread