2017-02-15 6 views
3

Ich habe ein JSON-Array nach dem Formularübermittlung mit formSerialize Funktion wie dieseWie ein mehrdimensionales Array von normalen Array

[ 
     {"name":"client_management-testmonitoring","value":"0"}, 
     {"name":"client_operations-testmonitoring","value":"0"}, 
     {"name":"tpl_management-testmonitoring","value":"0"}, 
     {"name":"tpl_operations-testmonitoring","value":"0"}, 
     {"name":"channel_partner-testmonitoring","value":"0"}, 
     {"name":"operator-testmonitoring","value":"0"}, 
     {"name":"financier-testmonitoring","value":"0"}, 
     {"name":"client_management-test_monitoring_2","value":"0"}, 
     {"name":"client_operations-test_monitoring_2","value":"0"}, 
     {"name":"tpl_management-test_monitoring_2","value":"0"}, 
     {"name":"tpl_operations-test_monitoring_2","value":"0"}, 
     {"name":"channel_partner-test_monitoring_2","value":"0"}, 
     {"name":"operator-test_monitoring_2","value":"0"}, 
     {"name":"financier-test_monitoring_2","value":"0"}, 
     {"name":"client_management-test_monitoring_3","value":"0"}, 
     {"name":"client_operations-test_monitoring_3","value":"0"}, 
     {"name":"tpl_management-test_monitoring_3","value":"0"}, 
     {"name":"tpl_operations-test_monitoring_3","value":"0"}, 
     {"name":"channel_partner-test_monitoring_3","value":"0"}, 
     {"name":"operator-test_monitoring_3","value":"0"}, 
     {"name":"financier-test_monitoring_3","value":"0"} 
] 

und ich brauche erstellen, um diese Array wie folgt zu konvertieren:

[ 
    { 
     "role": [ 
      { 
       "role_name": "client_management", 
       "report_name": [ 
        { 
         "test_monitoring_1": 1, 
         "test_monitoring_2": 1, 
         "test_monitoring_3": 0 
        } 
       ] 
      } 
     ] 
    }, 
    { 
     "role": [ 
      { 
       "role_name": "financier", 
       "report_name": [ 
        { 
         "test_monitoring_1": 1, 
         "test_monitoring_2": 0, 
         "test_monitoring_3": 1 
        } 
       ] 
      } 
     ] 
    } 
] 

Ich versuche diesen Code, um das multidimensionale Array zu bekommen.

var formData = $('#' + reportType).serializeArray(),matrix_array =[]; 


for (var u = 0; u < formData.length; u++) { 


    for (var user in formData[u]) 
    { 
     if (user == 'name') { 
      var matrix_name_n = formData[u][user], 
        matrix_name_a = matrix_name_n.split('-'), 
        role_name = matrix_name_a[0], 
        parameter_name = matrix_name_a[1]; 
      var matrix_array_2 = []; 
     } 
     if (user == 'value') { 
      var matrix_param_value = formData[u][user], matrix_array_3 = [matrix_param_value]; 
     } 

    } 
    var matrix_array2 = {}; 
    var matrix_array2 = {}; 
    matrix_array2["role"] = role_name; 
    matrix_array2[parameter_name] = matrix_param_value; 

    matrix_array_2.push(matrix_array2); 
    matrix_array.push(matrix_array_2); 
    var insert_matrix = {}; 
    insert_matrix = JSON.stringify(formData); 
} 

aber bin nicht immer die erwartet jemand result.Please zu helfen, dieses Problem zu klären

+0

bitte auch das gewünschte Ergebnis hinzufügen. –

+0

{ "Rolle": [{ role_name: "client_management", report_name: [{ test_monitoring_1: 1, test_monitoring_2: 1, test_monitoring_3: 0 }] }] }, { "Rolle" [{ role_name: "Finanzier", report_name: [{ test_monitoring_1: 1, test_monitoring_2: 0, test_monitoring_3: 1 }] }]: } –

+0

Bearbeiten Sie die Frage und dort das Ergebnis hinzufügen. Richtig formatieren Sie Ihre Frage, es hilft uns, das Problem herauszufinden @SoumyaSarasan –

Antwort

3

Sie den Namen von Minuszeichen spalten konnte und den ersten Teil als role_name und den zweiten Teil als report_name Eigenschaft von das innere Objekt.

var data = [{ name: "client_management-testmonitoring", value: 0 }, { name: "client_operations-testmonitoring", value: 0 }, { name: "tpl_management-testmonitoring", value: 0 }, { name: "tpl_operations-testmonitoring", value: 0 }, { name: "channel_partner-testmonitoring", value: 0 }, { name: "operator-testmonitoring", value: 0 }, { name: "financier-testmonitoring", value: 0 }, { name: "client_management-test_monitoring_2", value: 0 }, { name: "client_operations-test_monitoring_2", value: 0 }, { name: "tpl_management-test_monitoring_2", value: 0 }, { name: "tpl_operations-test_monitoring_2", value: 0 }, { name: "channel_partner-test_monitoring_2", value: 0 }, { name: "operator-test_monitoring_2", value: 0 }, { name: "financier-test_monitoring_2", value: 0 }, { name: "client_management-test_monitoring_3", value: 0 }, { name: "client_operations-test_monitoring_3", value: 0 }, { name: "tpl_management-test_monitoring_3", value: 0 }, { name: "tpl_operations-test_monitoring_3", value: 0 }, { name: "channel_partner-test_monitoring_3", value: 0 }, { name: "operator-test_monitoring_3", value: 0 }, { name: "financier-test_monitoring_3", value: 0 }], 
 
    result = data.reduce(function (hash) { 
 
     return function (r, a) { 
 
      var parts = a.name.split('-'); 
 
      if (!hash[parts[0]]) { 
 
       hash[parts[0]] = {}; 
 
       r[0].role.push({ role_name: parts[0], report_name: [hash[parts[0]]] }); 
 
      } 
 
      if (!parts[1].match(/\d$/)) { 
 
       parts[1] = 'test_monitoring_1'; 
 
      } 
 
      hash[parts[0]][parts[1]] = a.value; 
 
      return r; 
 
     } 
 
    }(Object.create(null)), [{ report_name: "monitoring", role: [] }]); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

danke Nina Scholz. Es klappt. –

+0

Ich brauche noch eine Hilfe. Dieses Array muss ich mit dem Knoten js in mongodb einfügen. es wird nicht korrekt eingefügt. $ Schnipsel ({ Typ: "post", url: "/ Insert /" + id, datatype: "json", Daten: Ergebnis Erfolg: function (res) { } }); benutze thihs code zum einfügen –

+0

ich habe keine ahnung von mongo und jquery. –

Verwandte Themen