2011-01-12 7 views
1

diese Datenstruktur Unter Berücksichtigung:Split JavaScript-Array in einzelne Variablen

var vehicles = [ 
    [ "2011","Honda","Accord" ], 
    [ "2010","Honda","Accord" ], 
    ..... 
]; 

Looping durch jede Fahrzeuge Artikel, gibt es eine Möglichkeit, die Array-Elemente auf einzelne Variablen alle in einem Schuss, so etwas wie neu zuzuordnen:

for (i = 0; i < vehicles.length; i++) { 
    var(year,make,model) = vehicles[i]; // doesn't work 
    ..... 
} 

... ich versuche, weg von zu tun:

for (i = 0; i < vehicles.length; i++) { 
    var year = vehicles[i][0]; 
    var make = vehicles[i][1]; 
    var model = vehicles[i][2]; 
    ..... 
} 

Nur neugierig, da diese Art von Sache in anderen Programmiersprachen verfügbar ist. Vielen Dank!

Antwort

4

Nein leider gibt es keine Methode, dies zu tun XBrowser derzeit. (das ist mir bewusst).

Relativ bald ist es möglich, Cross-Browser, siehe Link:

https://developer.mozilla.org/en/New_in_JavaScript_1.7

(In PHP gibt es "Liste", die genau das tun, was Sie wollen, nichts Vergleichbares XBrowser für Javascript noch)

Natürlich könnte relativ bald alles bedeuten usw. (Danke Felix für das Aufzeigen meiner Fehler darin)

+0

+1 (.. Ein Link abgeschnitten Gerade FYI) – polarblau

+0

@Felix, guter Punkt. Meine Bedeutung war, dass dies nicht unterstützt wird (das ist mir bekannt) Cross-Browser (moderne IE durch moderne Webkit). Will bearbeiten, um das klarer zu machen, danke. –

+1

Danke. Das wird nett sein. In Perl können Sie einfach die direkte Zuweisung vornehmen: my ($ first, $ second, $ third, ...) = @array; .. vielleicht eines der wenigen einfachen Dinge über Perl? :) – Wick

1

Wahrscheinlich ist die nächste, die Sie derzeit in Javascript erhalten, die redundantezu beseitigenund trennen Sie die Anweisungen mit einem Komma-Trennzeichen.

for (i = 0; i < vehicles.length; i++) { 
    var year = vehicles[i][0], make = vehicles[i][1], model = vehicles[i][2]; 
    ..... 
} 

oder man könnte es so etwas verkürzen:

for (i = 0; i < vehicles.length; i++) { 
    var v = vehicles[i], year = v[0], make = v[1], model = v[2]; 
    ..... 
} 
+1

oooh gute Antwort, das ist verdammt nah. – Wick

1

Die nächste Alternative, die ich unter Verwendung einer Funktion denken konnte und mit apply() es zu nennen. Wenn Sie ein Array übergeben, wird es als jedes Argument übergeben.

function vehicle(year, make, model) { 
    // do stuff 
} 

for (i = 0; i < vehicles.length; i++) { 
    vehicle.apply (this, vehicles[i]); 
} 

Oder eine anonyme Funktion:

for (i = 0; i < vehicles.length; i++) { 
    (function(year, make, model) { 
     // do stuff 
    }).apply(this, vehicles[i]); 
} 
Verwandte Themen