Search code examples
javascriptdojodojox.grid.datagrid

generate list of objects with for loop


With this code I can fill my datagrid with values. Each item is one line.

gridDataVK4000 = {

                items : [{
                        "Datum" : GridDate[0],
                        "VERSENDET_PDF" : values[0][0],
                        "FAKTUREN_POSTBILLING" : values[1][0],
                        "VERSENDET_XML" : values[2][0],
                        "VERARBEITET_PDF_TCO" : values[3][0],
                        "VERARBEITET_XML_TCO" : values[4][0]
                    }, {
                        "Datum" : GridDate[1],
                        "VERSENDET_PDF" : values[0][1],
                        "FAKTUREN_POSTBILLING" : values[1][1],
                        "VERSENDET_XML" : values[2][1],
                        "VERARBEITET_PDF_TCO" : values[3][1],
                        "VERARBEITET_XML_TCO" : values[4][1]
                    }, {
                        "Datum" : GridDate[2],
                        "VERSENDET_PDF" : values[0][2],
                        "FAKTUREN_POSTBILLING" : values[1][2],
                        "VERSENDET_XML" : values[2][2],
                        "VERARBEITET_PDF_TCO" : values[3][2],
                        "VERARBEITET_XML_TCO" : values[4][2]
                    }....

Now I would like to write it shorter. This is my code so far. But I don't know how to get the values in the right structure:

var gridDataVK40001 = [];
            var key,
            i;
            for (i = 0; i < 14; i++) {
                key = i + "";
                gridDataVK40001.push({
                    "Datum" : GridDate[i],
                    "Fakturen_gesamt" : values[0][i],
                    "T1" : values[1][i],
                    "T2" : values[2][i],
                    "versendete PDF" : values[3][i],
                    "VERARBEITETE PDFs TSBS" : values[4][i],
                    "VERARBEITETE IDOCs TSBS" : values[5][i]
                });
            }

actual structure:

[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]

target structure:

Object {items: Array[15]}

any sugestions?


Solution

  • Your gridDataVK40001 variable is an Array ([]). You need an Object ({}) with an items Array property:

    var gridDataVK40001 = {items: []};
    var key,
      i;
    for (i = 0; i < 14; i++) {
      key = i + "";
      // we now push to the item property
      gridDataVK40001.items.push({
        "Datum": GridDate[i],
        "Fakturen_gesamt": values[0][i],
        "T1": values[1][i],
        "T2": values[2][i],
        "versendete PDF": values[3][i],
        "VERARBEITETE PDFs TSBS": values[4][i],
        "VERARBEITETE IDOCs TSBS": values[5][i]
      });
    }