In your code you are doing this:
var jsontemp=jsonstr;

This is not making a copy of jsonstr, it is making an alias that points to
the same object. This means that later when you are modifying jsontemp.a
you are also modifying jsonstr.a and when you push jsontemp on to your
array, you are pushing a reference on to the list.

In other words, you are modifying jsonstr in place and then adding it to an
array each time you do it.

~Ryan

On Wed, Aug 3, 2016, 5:44 PM Tippur <[email protected]> wrote:

> Changed it to
>
> ##########
>
> 'use strict'
>
> var str='{ \
>
>         "a": ["x", "y"], \
>
>         "rest": "fdsf", \
>
>         "ff": "ll" \
>
> }'
>
>
> var jsonstr=JSON.parse(str);
>
>
> var payload=[];
>
>
> if (Array.isArray(jsonstr['a'])){
>
>
>         console.log("Is array");
>
>
>         var payload=[];
>
>
>         jsonstr['a'].forEach(function(item, index) {
>
>
>                 console.log(item);
>
>                 var jsontemp=jsonstr;
>
>
>                 jsontemp.a=item;
>
>
>                 console.log(jsontemp);
>
>
>                 payload.push(jsontemp);
>
>
>
>         });
>
>
> }
>
>
> console.log(payload);
>
>
> ####################
>
>
> i get the same result.
>
> On Wednesday, 3 August 2016 14:16:31 UTC-7, jfhbrook wrote:
>
>> It looks like jsontemp is a global variable here, due to the lack of a
>> 'var', 'let' or similar.
>>
>> fwiw adding 'use strict'; at the top of your file should make this
>> complain rather than silently doing what you don't want.
>>
>> --Josh
>>
>> On Wed, Aug 3, 2016 at 3:12 PM, Tippur <[email protected]> wrote:
>> > I have a json object that has an array field
>> >
>> > I want to take that object and break it into individual json objects.
>> >
>> > For example { a:[ 'x', 'y'], rest: 'fdsf', ff: 'll' } should be broken
>> into
>> >
>> > { a: 'x', rest: 'fdsf', ff: 'll' } and { a: 'y', rest: 'fdsf', ff: 'll'
>> }
>> >
>> >
>> > Here is my code:
>> > ##################################
>> >
>> > var str='{ \
>> >
>> >         "a": ["x", "y"], \
>> >
>> >         "rest": "fdsf", \
>> >
>> >         "ff": "ll" \
>> >
>> > }'
>> >
>> > jsonstr=JSON.parse(str);
>> >
>> > var payload=[];
>> >
>> > if (Array.isArray(jsonstr['a'])){
>> >
>> >         console.log("Is array");
>> >
>> >         var payload=[];
>> >
>> >         jsonstr['a'].forEach(function(item, index) {
>> >
>> >                 console.log(item);
>> >
>> >                 jsontemp=jsonstr;
>> >
>> >                 jsontemp.a=item;
>> >
>> >                 console.log(jsontemp);
>> >
>> >                 payload.push(jsontemp);
>> >
>> >         });
>> >
>> > }
>> >
>> > console.log(payload);
>> >
>> > ##################################
>> >
>> > Here is the output
>> >
>> > [ { a: 'y', rest: 'fdsf', ff: 'll' },
>> >
>> >   { a: 'y', rest: 'fdsf', ff: 'll' } ]
>> >
>> >
>> > As you can see, the object appended to the final payload has the same
>> > element (payload.a)
>> >
>> >
>> > What am I doing wrong?
>> >
>> >
>> > - Shekar
>> >
>> >
>> >
>> >
>> >
>> >
>> > --
>> > Job board: http://jobs.nodejs.org/
>> > New group rules:
>> > https://gist.github.com/othiym23/9886289#file-moderation-policy-md
>> > Old group rules:
>> > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> > ---
>> > You received this message because you are subscribed to the Google
>> Groups
>> > "nodejs" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> an
>>
> > email to [email protected].
>> > To post to this group, send email to [email protected].
>>
> > To view this discussion on the web visit
>> >
>> https://groups.google.com/d/msgid/nodejs/8275a391-bc72-4bba-a43f-a17be42f0d61%40googlegroups.com.
>>
>> > For more options, visit https://groups.google.com/d/optout.
>>
> --
> Job board: http://jobs.nodejs.org/
> New group rules:
> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
> Old group rules:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/nodejs/0c07b08f-3f2f-49e4-b268-179fb840ea64%40googlegroups.com
> <https://groups.google.com/d/msgid/nodejs/0c07b08f-3f2f-49e4-b268-179fb840ea64%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
-- 

~Ryan

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/CAGjmZGxGf-uPS2x663nP1m-E3zRU7qsaQcsYck-8vTMuUqUJ2g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to