1

In the following code i am trying to populate the javascript class,such that i get an object which i can stringify to json string.

       function classValue(valuearrs) {
        for (var i = 0; i < valuearrs.length; i++) {
            for (j = 0; j < valuearrs[i].length; j++) {

                this.id = valuearrs[i][j];
                this.name = valuearrs[i][j];
                this.somekey = valuearrs[i][j];
            }
        }
  }


   function CreatenestedarrObj( valuearr) {

        this.Arrayparameters = [new classValue (valuearr)];
    }

   function ArrayMethodCall() {

       var valuearr = new Array();
       valuearr[0] = "myval1";
       valuearr[1] = "myval2";
       valuearr[2] = "myval3";
       var valuearr1 = new Array();
       valuearr1[0] = "myval11";
       valuearr1[1] = "myval12";
       valuearr1[2] = "myval13";
       nestedarr = new Array();
       nestedarr[0] = valuearr;
       nestedarr[1] = valuearr1;

       var x = new CreatenestedarrObj( nestedarr);
       var strobject = JSON.stringify(x);
       alert(strobject);
   }

   </script>
  </head> <body> MethodCall: <input type="button" value="Call Method" onclick=" ArrayMethodCall ()" />

After Stringifying the value expected is {ArrayParameters:[{myval1,myval2,myval3},{myval1,myval12,myval13}]}.The thing i can think i am missing is creating new object each time in the loop but how ? or i might be totally wrong.Any help will be much appreciated.

3 Answers 3

4

try this

    function classValue(valuearrs) {
        var arr = []
        for (var i = 0; i < valuearrs.length; i++) {
            for (j = 0; j < valuearrs[i].length; j++) {
                var temp = new Object();
                temp.id = valuearrs[i][j];
                temp.name = valuearrs[i][j];
                temp.somekey = valuearrs[i][j];
                arr[j] = temp;
            }
        }
        return arr;
  }
Sign up to request clarification or add additional context in comments.

Comments

2

Change this:

function classValue(valuearrs) {
        var arr=[]
          for (var i = 0; i < valuearrs.length; i++) {
              arr[i]={};
            for (j = 0; j < valuearrs[i].length; j++) {

                arr[i].id = valuearrs[i][j];
                arr[i].name = valuearrs[i][j];
                arr[i].somekey = valuearrs[i][j];
            }
        }
          return arr;
  }

Comments

0

i don't know why you need to split the nestedarr to id,name and somekey but if you don't need to, just return the valuearrs and you will be fine:

function classValue(valuearrs) {
    return valuearrs;
  }


   function CreatenestedarrObj( valuearr) {

        this.Arrayparameters = [new classValue (valuearr)];
    }

   function ArrayMethodCall() {

       var valuearr = new Array();
       valuearr[0] = "myval1";
       valuearr[1] = "myval2";
       valuearr[2] = "myval3";
       var valuearr1 = new Array();
       valuearr1[0] = "myval11";
       valuearr1[1] = "myval12";
       valuearr1[2] = "myval13";
       nestedarr = new Array();
       nestedarr[0] = valuearr;
       nestedarr[1] = valuearr1;

       var x = new CreatenestedarrObj( nestedarr);
       var strobject = JSON.stringify(x);
       console.info(strobject);
   }

the output is

{"Arrayparameters":[[["myval1","myval2","myval3"],["myval11","myval12","myval13"]]]}  

or far better if you don't want it as Arrayparameters, you can use following code

var strobject = JSON.stringify(nestedarr);

and the output will be like this :

[["myval1","myval2","myval3"],["myval11","myval12","myval13"]]

1 Comment

Got the answer down.Syntactically In Json String array objects elements will be in {} .Thanks for replying.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.