Ankündigung

Einklappen
Keine Ankündigung bisher.

Objekt nach oder vor einem bestimmten Objekt key einfügen

Einklappen

Neue Werbung 2019

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

  • Objekt nach oder vor einem bestimmten Objekt key einfügen

    Hallo zusammen

    Ist es denn auf einfache Art möglich, ein weiteres Objekt nach oder vor einem bestimmten Objekt key einzufügen? Ich finde irgenwie gar nichts, nur mit Arrays.

    Danke für einen Tip im voraus.

    Code:
    const obj = {
        a: {key: "a"},
        b: {key: "b"},
        c: {key: "c"}  
    };
    
    
    const newObj = {d: {key: "d"}};
    // assign at a specific index/key
    
    const object = Object.assign(newObj, obj);

  • #2
    Die Reihenfolge wird vom jeweiligen JavaScript-Standard bestimmt und teilweise auch von Browsern unterschiedllich gehandhabt. Wenn für dich die Reihenfolge wichtig ist, solltest du keine Objekteigenschaften verwenden sondern z.B. ein Array.

    Kommentar


    • #3
      Oh ich sehe, wieder mal mehr ein Grund warum ich Javascript nicht gerne habe. Was mache ich nun? Ich brauche eben ein Objekt. Mal studieren.

      Besten Dank schonmal.

      Kommentar


      • #4
        Zitat von strub Beitrag anzeigen
        Oh ich sehe, wieder mal mehr ein Grund warum ich Javascript nicht gerne habe. Was mache ich nun? Ich brauche eben ein Objekt. Mal studieren.
        Du könntest die Reihenfolge mit einem Array festlegen:

        Code:
        var order = ['a', 'b', 'c'];
        order.splice(2, 0, 'd');
        console.log(order);
        // Array(4) [ "a", "b", "d", "c" ]

        Kommentar


        • #5
          Hatte die gleiche Idee, bin gerade an einer Funktion zu schreiben

          Kommentar


          • #6
            So ist noch nich perfekt, aber es klappt schonmal. Vorausgesetzt die Objekte sind indexiert bei einem bestimmten key und haben diesen auch im Objekt selber.


            Code:
            function addToObject(toObject, object, toKey, before = true, keyName = 'key')
            {
                var keys = Object.keys(toObject),
                    index = keys.indexOf(toKey);
            
                if (index < 0) {
                    keys.push(object[keyName]);
                } else {
                    index = (before === true) ? index : index+1;
                    keys.splice(index, 0, object[keyName]);
                }
            
                // rebuild object.
                var keysLength = keys.length,
                    newObj = {};
            
                for (var i = 0; i < keysLength; i++)
                {
                    if (typeof toObject[keys[i]] !== 'undefined')
                    {
                        newObj[keys[i]] = toObject[keys[i]];
                    } else {
                        newObj[keys[i]] = object;
                    }
                }
            
                return newObj;
            };
            
            
            var items = {
                h1: {
                    title: "h1"
                },
                h2: {
                    key: "h2"
                },
                h3: {
                    key: "h3"
                }    
            };
            
            var item = {key: "bold"};
            
            var newObj = addToObject(items, item, "h2");

            Kommentar


            • #7
              [OFFTOPIC]

              Zitat von strub Beitrag anzeigen
              Oh ich sehe, wieder mal mehr ein Grund warum ich Javascript nicht gerne habe.
              Das hat nichts mit JavaScript zu tun, sondern mit deiner Erwartung an Objekte, etwas zu tun, wozu diese (auch in anderen Sprachen) gar nicht gedacht sind.

              [/OFFTOPIC]

              Kommentar


              • #8
                Wie gesagt, ich würde mich nicht darauf verlassen. Wenn dir die Reihenfolge wichtig ist, verwende ein Array und kein Objekt. Sonst kann es die eine oder andere Überraschung geben.

                Kommentar


                • #9
                  Ok danke, merke ich mir hellbringer.

                  Dormilich so ist es

                  Kommentar


                  • #10
                    http://trentrichardson.com/2011/01/2...vascript-hash/

                    Kommentar


                    • #11
                      Danke dir kaminbausatz für den nützlichen Link. Konnte das Ganze letzendlich doch anders lösen.

                      Kommentar

                      Lädt...
                      X