7 Stimmen

Warum wird array.push() verwendet, um ein Objekt zu erstellen?

Ich las Wie kann ich Abfragezeichenfolgenwerte in JavaScript erhalten? bei Stackoverflow und dieses Stück Code aus der ersten Antwort ließ mich fragen, warum ´vars.push()´ so verwendet wird?

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

Aber anstatt dessen:

var vars=[];
...
vars.push(hash[0]);
vars[hash[0]] = hash[1];

Habe ich den Code wie folgt umgeschrieben:

var vars={};
...
vars[hash[0]] = hash[1];

und es funktioniert. Jetzt sind die Fragen:

  • Warum würde jemand ein Array für diese Art von Antwort verwenden?
  • Und warum würde jemand das Format ARR.push(KEY) verwenden und dann das Format ARR[KEY]=VAL verwenden?

2voto

Kobi Punkte 129985

Dies führt dazu, dass vars sowohl ein Array von Schlüsseln als auch ein Wörterbuch ist.
Der einzige gute Grund, den ich mir vorstellen kann, ist, die Reihenfolge der Abfrageparameter beizubehalten, die in einem Wörterbuch nicht definiert ist.

So oder so würde ich darauf hinweisen, dass diese Funktion doppelte Abfrageparameter entfernt - es wird nur der letzte Wert behalten (obwohl der Schlüssel mehrmals in das Array eingefügt würde)

2voto

Guffa Punkte 663241

Die Funktion verwendet das Array sowohl als Array als auch als Objekt.

Als Array enthält es die Schlüssel aus der Abfragezeichenfolge. Als Objekt enthält es Eigenschaften, die nach den Schlüsseln in der Abfragezeichenfolge benannt sind, und die Eigenschaften enthalten die Werte aus der Abfragezeichenfolge.

Also, wenn die Abfragezeichenfolge zum Beispiel so aussieht: a=1&b=2, enthält das Array die beiden Elemente "a" und "b", und es hat die beiden Eigenschaften a mit dem Wert 1 und b mit dem Wert 2.

1voto

luke14free Punkte 2521

Push verschiebt den Schlüssel als letzten Schlüssel. So können Sie eine logische Reihenfolge im Array haben.

1voto

Ram Punkte 140353

Push() fügt seine Argumente der Reihe nach am Ende des Arrays an. Es modifiziert das Array direkt, anstatt ein neues Array zu erstellen. push() und seine Begleitmethode pop() verwenden Arrays, um die Funktionalität eines First-In-Last-Out-Stapels bereitzustellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X