Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #30286
| From | Aleksandro <aleksandro@gmx.com> |
|---|---|
| Newsgroups | comp.lang.javascript |
| Subject | Re: duplicator an array |
| Date | 2016-04-16 14:13 -0300 |
| Organization | A noiseless patient Spider |
| Message-ID | <netrli$9dr$1@dont-email.me> (permalink) |
| References | <ea578169-9d58-4249-91b4-e0cbad5a6fd8@googlegroups.com> <nen4e4$ggn$1@dont-email.me> <netb2m$42n$1@news.albasani.net> |
On 16/04/16 09:27, Stefan Weiss wrote:
> Aleksandro wrote:
>> On 13/04/16 22:27, JRough wrote:
>>> var arr =[1,2,3,4,5];
>>> function duplicator(arr){
>>> return arr.concat(arr.slice(0));
>>> }
>>> var res = duplicator(arr);
>
> ...
>
>> Try:
>>
>> Array.prototype.duplicate = function ()
>> {
>> this.push.apply(this, this.slice(0))
>> }
>
> Note that this is not equivalent to OP's function.
>
> 1) push() modifies the original array, concat() does not.
>
> 2) It handles sparse arrays badly:
>
> "use strict";
>
> let a = [0,,,,4],
> b = a.slice(0);
>
> dir(a, "a");
> dir(b, "b");
> dir(a.concat(b), "concat()");
> a.push.apply(a, b);
> dir(a, "push() applied");
>
> function dir (arr, label)
> {
> console.log(label + ":");
> for (let i in arr) console.log(` [${i}] = ${arr[i]}`);
> }
>
> Output:
>
> a:
> [0] = 0
> [4] = 4
> b:
> [0] = 0
> [4] = 4
> concat():
> [0] = 0
> [4] = 4
> [5] = 0
> [9] = 4
> push() applied:
> [0] = 0
> [4] = 4
> [5] = 0
> [6] = undefined
> [7] = undefined
> [8] = undefined
> [9] = 4
>
> This is because apply() fills in `undefined` for missing parameters.
>
>
> By the way, ES2015 introduced the spread operator `...`.
> With this operator, you can also write
>
> this.push(...this.slice(0))
>
> instead of
>
> this.push.apply(this, this.slice(0))
>
>
> -- stefan
It could have been what the OP intended though.
Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
duplicator an array JRough <janis.rough@gmail.com> - 2016-04-13 18:27 -0700
Re: duplicator an array Aleksandro <aleksandro@gmx.com> - 2016-04-14 01:00 -0300
Re: duplicator an array JRough <janis.rough@gmail.com> - 2016-04-14 09:53 -0700
Re: duplicator an array "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-04-14 19:41 +0200
Re: duplicator an array Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-04-14 22:09 +0200
Re: duplicator an array Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-04-14 22:23 +0200
Re: duplicator an array Stefan Weiss <krewecherl@gmail.com> - 2016-04-16 14:27 +0200
Re: duplicator an array Joao Rodrigues <jr@none.com> - 2016-04-16 12:01 -0300
Re: duplicator an array Joao Rodrigues <jr@none.com> - 2016-04-16 13:43 -0300
Re: duplicator an array Aleksandro <aleksandro@gmx.com> - 2016-04-16 14:13 -0300
Re: duplicator an array bharat.bandgar009@gmail.com - 2017-05-03 01:33 -0700
csiph-web