2017-02-21 2 views
0

Gibt es eine gute Idee, die mir helfen kann, mein Problem in Bezug auf die mehrdimensionale Java-Array-Builder zu lösen?Javascript Arrays Builder mit mehreren Stich-Tasten

Die Dinge, die ich wirklich tun möchte, ist, dass ... d. H. Ich habe ein Formularfeld mit dem Namen 'fields.0.fld.0.first_name', dass Feldname in Javascript-Array-Format umgewandelt werden muss. Die 0 hier bedeutet als Bezeichner, dass das Feld "fields" in diesem Feldnamen als "new Array()" gestartet werden muss, da es mehrere Unterelemente ohne spezifischen Index behandelt. Und einige andere Zeichenfolgen (eine Nicht-Ganzzahl), die nur als 'Object' Typ von js-Array oder einfach als '{}' erwartet wird (das ist der letzte Teil des Feldnamens der 'first_name', der wie formatiert wird '{first_name: value}').

Jetzt, da der Zweck ist, die Felder in der Form zu bekommen, suche ich nach einer Funktion, die automatisch ein konstruiertes Json-Format dieser Felder mit Wert natürlich erzeugt :-). Die Beispiel-JSON-Format-Ausgabe muss ...

{"fields" : [ 
     { 
      "_id" : "", 
      "type" : "text", 
      "name" : "test1", 
      "id" : "", 
      "class" : "", 
      "conClass" : "s12", 
      "label" : "", 
      "required" : false, 
      "deleted" : false 
     }, 
     { 
      "_id" : "", 
      "type" : "group", 
      "gStart" : "", 
      "gEnd" : "", 
      "flds" : [ 
       { 
        "_id" : "", 
        "type" : "text", 
        "name" : "test2", 
        "id" : "", 
        "class" : "", 
        "conClass" : "s12", 
        "label" : "", 
        "required" : false, 
        "deleted" : false 
       } 
      ] 
     } 
    ] 
} 
+6

Erwarten Sie, dass wir Code für Sie schreiben? Sie sollten uns zeigen, was Sie versucht haben, was es tut und was Sie erwartet haben, damit wir Ihnen helfen können. – Telokis

+0

Ich habe es bereits gepostet. Ich habe keine Idee, wie ich das einhalten soll, deshalb poste ich hier. Wenn Sie sich auf das beziehen, was ich versucht habe, erhalten Sie wahrscheinlich auch eine falsche Antwort. Ich beziehe mich auf jene Leute, die eine brillante Idee haben oder das gleiche Problem haben, das bereits gelöst wurde. –

+0

Sorry, aber ich denke, Sie haben das Ziel von StackOverflow missverstanden. Wir sind hier, um Ihnen bezüglich des von Ihnen geschriebenen Codes zu helfen, tut mir leid. – Telokis

Antwort

0

Ok, ich habe es gelöst. Basierend auf der Namensstruktur und der erforderlichen Logik habe ich herausgefunden, dass das js eval sehr nützlich ist. Jetzt kann ich ein mehrdimensionales Array von js mit der folgenden Funktion erstellen.

function _arr_definer(items, _arr_handler, _curr, _val) 
    { 
     var _tmp_indexes = ""; 
     if(_curr > 0){ 
      for(var _i = 0; _i < _curr; _i++){ 
       if(Number(items[_i]) >= 0) 
        _tmp_indexes += "[" + items[_i] + "]"; 
       else 
        _tmp_indexes += "['" + items[_i] + "']"; 
      } 

      if(typeof eval("_arr_handler" + _tmp_indexes + "['" + items[_curr] + "']") == 'undefined'){ 
       if(Number(items[_curr]) >= 0){ 
        if(typeof items[_curr + 1] != 'undefined'){ 
         if(Number(items[_curr + 1]) >= 0){ 
          var _temp_sub = []; 
          if(typeof eval("_arr_handler" + _tmp_indexes) != 'undefined') 
           eval("_temp_sub = _arr_handler" + _tmp_indexes); 
          _temp_sub[items[_curr]] = []; 
          eval("_arr_handler" + _tmp_indexes + " = _temp_sub;"); 
         }else{ 
          var _temp_sub = []; 
          if(typeof eval("_arr_handler" + _tmp_indexes) != 'undefined') 
           eval("_temp_sub = _arr_handler" + _tmp_indexes); 

          _temp_sub[items[_curr]] = {}; 
          eval("_arr_handler" + _tmp_indexes + " = _temp_sub;"); 
         } 
        }else{ //assign value 
         eval("_arr_handler" + _tmp_indexes + "['"+ items[_curr] +"'] = _val;"); 
        } 
       }else{ 
        if(typeof items[_curr + 1] != 'undefined'){ 
         if(Number(items[_curr + 1]) >= 0){ 
          var _temp_sub = {}; 
          if(typeof eval("_arr_handler" + _tmp_indexes) != 'undefined') 
           eval("_temp_sub = _arr_handler" + _tmp_indexes); 
          _temp_sub[items[_curr]] = []; 
          eval("_arr_handler" + _tmp_indexes + " = _temp_sub;"); 
         }else{ 
          var _temp_sub = {}; 
          if(typeof eval("_arr_handler" + _tmp_indexes) != 'undefined') 
           eval("_temp_sub = _arr_handler" + _tmp_indexes); 
          _temp_sub[items[_curr]] = {}; 
          eval("_arr_handler" + _tmp_indexes + " = _temp_sub;"); 
         } 
        }else{ //assign the value 
         eval("_arr_handler" + _tmp_indexes + "['"+ items[_curr] +"'] = _val;"); 
        } 
       } 
      } 
     }else{ 
      if(typeof eval("_arr_handler" + _tmp_indexes + "['"+ items[_curr] +"']") == 'undefined'){ 
       if(typeof items[_curr + 1] != 'undefined'){ 
        if(Number(items[_curr + 1]) >= 0){ 
         eval("_arr_handler" + _tmp_indexes + "['"+ items[_curr] +"'] = [];"); 
        }else{ 
         eval("_arr_handler" + _tmp_indexes + "['"+ items[_curr] +"'] = {};"); 
        } 
       }else{ //assign the value 
        eval("_arr_handler" + _tmp_indexes + "['"+ items[_curr] +"'] = _val;"); 
       } 
      } 
     } 

     if(typeof items[_curr + 1] != 'undefined'){ 
      _arr_definer(items, _arr_handler, _curr + 1, _val); 
     } 
    } 

Und für die Verwendung folgen Sie einfach der unten stehenden Erklärung. nur einschließlich der Unter> Unter> Unter> Unterelemente

var _arr_handler = {}; 

    var _items = "fields.0.flds.0.conClass".split('.'); 
    _arr_definer(_items, _arr_handler, 0, 'This is a testing content'); 

    var _items = "fields.0.flds.0.first_name".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 

    var _items = "fields.0.flds.0.subnames.0.nice".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 


    var _items = "other.cool.cool1.cooler.test".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 

    var _items = "other.cool.cool1.othersubs.0".split('.'); 
    _arr_definer(_items, _arr_handler, 0, true); 

    var _items = "other.cool.cool1.othersubs.1".split('.'); 
    _arr_definer(_items, _arr_handler, 0, false); 

    var _items = "more_field_1".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 

    var _items = "more_field_2".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 

    var _items = "more_field_3".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 

    var _items = "more_field_4.subs.0.item_1".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 

    var _items = "more_field_4.subs.0.item_2".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 

    var _items = "more_field_4.subs.0.item_3".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 

    var _items = "more_field_4.subs.0.item_4".split('.'); 
    _arr_definer(_items, _arr_handler, 0); 

    console.log(_arr_handler); 

Der Zweck ist, ... zu den MongoDB Dokument in einem Trigger speichern. :-)

Prost

Verwandte Themen