Ankündigung

Einklappen
Keine Ankündigung bisher.

javascript/Jquery array push für assoziatives

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • javascript/Jquery array push für assoziatives

    Hallo,
    ich möchte mit Javascript ein bestehendes assoziatives Array mit weiteren keys und Werten erweitern.
    geht das mit push? nur wie?

    das Basis-Array sieht so aus

    var data = {testid : tid ,name : name ,vorname: vorname, strasse: strasse};

    Ich nutze diese Form als Objekt da ich glaube das Ajax die Daten so erwartet.
    Zumindest funktioniert das so wenn ich Ajax die Daten in dieser form übergebe.
    (bin mir aber nicht sicher ob es als Objekt oder bormales array sein kann)

    Code:
                                  $.ajax({
                                    url:"beispiel.php",
                                    type:'GET',
                                    data: data,
                                     success:function(data){
    					$('#'+tab).html(data); 
    				}
    			  });

    an das Basis-array möchte ich nun weitere keys und Werte anhängen

    Die Werte und keys erhalte ich durch eine jquery-Abfrage eines Formulars der alle Input-felder liest
    was ich dort als "name" erhalte ist ein Teil des Keys (name hat hinten bei mir immer eine Nr dran, die ich muss ich zuvor rausfiltern)
    val gibt mir dazu den dazugehörigen Wert.

    Code:
    $("input").each(function() {
            var name = $(this).attr("name");
            var val  = $(this).val();
    
            if(val){
                    //keys[0]   =  name.replace(new RegExp('[0-9]', 'g'), '');
                      keys[1]   =  name.replace(new RegExp('[a-z][A-Z]\*', 'g'), '');        
    
                    data.push( ????); // hier möchte ich keys[1] als key anhängen
                                      // damit ich es dann in einem weiteren Stepp mit den Daten aus
                                      //dem Formular füllen kann id ein "name" enthalten sind füllen
                                      // kann
    
                            }
    
                            
                    });

    weiss nur nicht wie man ein assoziatives array bzw. dieses Objekt´erweitern kann


    Grüße Jörg


  • #2
    Hallo,

    Objekte werden in Javascript wie folgt erweitert:

    Code:
    var myObject = {
        key :  'value',
        key2: 'value 2'
    };
    
    // Erweitern um einen weiteren Wert:
    myObject.key3 = 'value 3'
    
    // Oder auch so:
    myObject['key4'] = 'value 4';
    Arrays mit Objekten:

    Code:
    var myArray = [
        { a: 1, b:2 }
    ];
    
    // Object hinzufügen
    myArray.push({ c: 3, d: 4});
    Kleiner Tip: Für das Parsen von Formularen bietet sich die Funktion serializearray an, die jQuery mitbringt.

    Kommentar


    • #3
      Zitat von tsdev Beitrag anzeigen
      Hallo,

      Objekte werden in Javascript wie folgt erweitert:

      Code:
      var myObject = {
          key :  'value',
          key2: 'value 2'
      };
      
      // Erweitern um einen weiteren Wert:
      myObject.key3 = 'value 3'
      
      // Oder auch so:
      myObject['key4'] = 'value 4';
      Arrays mit Objekten:

      Code:
      var myArray = [
          { a: 1, b:2 }
      ];
      
      // Object hinzufügen
      myArray.push({ c: 3, d: 4});
      Kleiner Tip: Für das Parsen von Formularen bietet sich die Funktion serializearray an, die jQuery mitbringt.
      sorry.. mus da mal genauer nachhaken... bin wie dieser Thread schon sagt... Anfänger.

      das wäre also ein Objekt ?
      Code:
      var myObject = {
          key :  'value',
          key2: 'value 2'
      };
      ??
      und das ein array?
      Code:
      var myArray = [
          { a: 1, b:2 }
      ];
      das ist doch das Gleiche oder?

      Gruß Jürgen

      ohhhh sorry, ich habe die [] übersehen.. ok alles klar Danke!!!!

      Kommentar


      • #4
        Hallo,

        ich hab das jetzt getestet und es geht soweit bis auf eine Frage

        mein Script sieht nun so aus
        in splitname bekomme ich nur den Namen und eine Zahl zurück...
        der Name den ich zurückbekomme muss ins Objekt geschoben werden

        wenn ich mir das ganze auf der Konsole ausgeben lasse so zeigt er nur die ersten Werte die im Objekt sind, jedoch nicht die noch reingeschoben wurden

        im alert(), sehe ich die Werte jedoch?

        Muss ich das console.log(myarray1);
        auch in einer Schleife laufen lassen?
        Ich möchte auf der Konsole sehen was er in das Objekt angehängt hat

        Grüße Jürgen
        Code:
        	$("input").each(function() {
        			var name = $(this).attr("name");
        			var id = $(this).attr("id");
        			var val = $(this).val();
                                  var splitname = splitIdNames(name);
        			
        			if(val){
        				if (splitname[1] == week){
        					
        					//myarray1[splitname[0]] = val;
        					myarray1.splitname[0] = val;
        					alert("das ist inhalt vom neuen objekt : "+myarray1[splitname[0]]);
        					console.log(myarray1);
        				}
        	/*
        				if(week ==  neu[1] && neu[0] != "radio"){
        					alert("in der aktuellen woche : name :"+neu[0]+" mit woche :"+neu[1]);
        				}else{
        					alert("das ist die alte woche  oder radio ==>: "+neu[1]);
        				}
        	*/			
        				
        			}
                   
        			if (((name) && name !== "") && ((id) && id !== "") && ((val) && val !== "")) {
        				inputs.push(this);
        			}
        		});

        Kommentar


        • #5
          Hallo,

          ich habe mir das Objekt jetzt in einer Schleife ausgeben lassen... super es funktioniert alles

          Danke!

          Kommentar


          • #6
            Hallöchen,

            ein Hinweis: JavaScript-Objekte habe mit assoziativen Arrays, wie man sie bspw. aus PHP kennt, nicht viel zu tun. Man sollte sie also nicht als solche missbrauchen und nur über Objekt-Eigenschaften iterieren wenn die Reihenfolge dabei keine Rolle spielt. Diese wird laut aktueller Spezifikation nämlich nicht garantiert und kann unter Umständen abweichen.

            Wenn du Daten in Form einer Liste abbilden willst, dann nutze numerische Arrays.

            Viele Grüße,
            lotti

            Kommentar


            • #7
              Zitat von lottikarotti Beitrag anzeigen
              Hallöchen,

              ein Hinweis: JavaScript-Objekte habe mit assoziativen Arrays, wie man sie bspw. aus PHP kennt, nicht viel zu tun. Man sollte sie also nicht als solche missbrauchen und nur über Objekt-Eigenschaften iterieren wenn die Reihenfolge dabei keine Rolle spielt. Diese wird laut aktueller Spezifikation nämlich nicht garantiert und kann unter Umständen abweichen.

              Wenn du Daten in Form einer Liste abbilden willst, dann nutze numerische Arrays.

              Viele Grüße,
              lotti
              Hallo,

              Danke für den Hinweis.
              Nein die Reihenfolge spielt bei meiner Anwendung keine Rolle.
              Für mich war es nur wichtig das Ajax mit den Daten umgehen kann.
              Mit dem Objekt kann es umgehen, ob es mit einem normalen assoziativen Array umgehen kann (also die Schreibweise mit den [{inhalt : test, usw}])
              weiss ich nicht.

              Ich hätte aber nach dem Tipp oben die Jquery Version von .serializeArray()
              verwenden sollen und damit mein Array oder Objekt erstellen...

              das wäre besser gewesen...
              gut beim nächsten mal

              Grüße Jürgen

              Kommentar


              • #8
                Zitat von selfmade01 Beitrag anzeigen
                Mit dem Objekt kann es umgehen, ob es mit einem normalen assoziativen Array umgehen kann (also die Schreibweise mit den [{inhalt : test, usw}])
                Das ist kein assoziatives Array, sondern ein numerisches.

                Kommentar


                • #9
                  wieso ich dachte immer ein numerisches array, hat nur Nummern als interne Zähler und assoziative Arrays haben keys in Form von "dasisteinkey"
                  jetzt bin ich etwas verwirrt

                  Kommentar


                  • #10
                    Hallöchen,

                    Zitat von selfmade01 Beitrag anzeigen
                    wieso ich dachte immer ein numerisches array, hat nur Nummern als interne Zähler und assoziative Arrays haben keys in Form von "dasisteinkey"
                    jetzt bin ich etwas verwirrt
                    Ein numerisches Array wird in JavaScript mit der []-Notation erzeugt. Ob der Inhalt nun primitive Werte oder eine Liste an Objekten ist, spielt dabei keine Rolle für den Zugriff auf die einzelnen Elemente:

                    PHP-Code:
                    /** Numerisches Array mit int-Werten */
                    var array = [123];
                    array[
                    0]; // 1
                    array[1]; // 2
                    array[2]; // 3

                    /** Numerisches Array mit string-Werten */
                    var array = ["A""B""C"];
                    array[
                    0]; // "A"
                    array[1]; // "B"
                    array[2]; // "C"

                    /** Numerisches Array mit Objekten */
                    var users = [
                        {
                    username'foo'},
                        {
                    username'bar'}
                    ];
                    users[0].username// "foo"
                    users[1].username// "bar"

                    /** Simples Objekt */
                    var user = {
                        
                    username'foo',
                        
                    password'secret'
                    };
                    user.username// "foo"
                    user.password// "secret" 
                    Wenn du Daten in einer definierten Reihenfolge abspeichern

                    Viele Grüße,
                    lotti

                    Kommentar

                    Lädt...
                    X