2010-09-11 12 views
7

Ich habe ein Array, wie unten:Wie kann ich ein Array mit jQuery zu einem Array von Arrays hinzufügen?

var cString = [ 
      ['1','Techdirt','www.techdirt.com'], 
      ['2','Slashdot','slashdot.org'], 
      ['3','Wired','wired.com'] 
      ]; 

zu diesem Array ich eine andere im gleichen Format hinzufügen möchten:

var test = ['4','Stackoverflow','stackoverflow.com'] 

ich mit ausprobiert habe:

var newArray = $.merge(cString, test); 

aber console.log(newArray); Ausgänge:

[►Array,►Array,►Array,'4','Stackoverflow','stackoverflow.com'] 
So 210

Ich bin davon aus, dass ich offensichtlich etwas fehlt bin. Oder etwas Dummes versuchen ... Hilfe?

Antwort

12

jQuery ist hierfür nicht erforderlich. Verwenden Sie einfach the Array's .push() method, um es zum Haupt-Array hinzuzufügen.

var test = ['4','Stackoverflow','stackoverflow.com'] 

cString.push(test); 

Was $.merge() tut, ist es das zweite Array geht durch Sie es und kopiert seine Elemente nacheinander in die erste übergeben.


EDIT:

Wenn Sie nicht das ursprüngliche Array ändern wollen, Sie eine Kopie davon zuerst machen könnte, und .push() das neue Array in die Kopie.

var cString = [ 
      ['1','Techdirt','www.techdirt.com'], 
      ['2','Slashdot','slashdot.org'], 
      ['3','Wired','wired.com'] 
      ]; 

var test = ['4','Stackoverflow','stackoverflow.com'] 

var newArray = cString.slice(); 

newArray.push(test); 
+1

Uhm, 'console.log (newArray)' jetzt gibt '4' =/ –

+0

@ David - Sie sicher? http://jsfiddle.net/XLVxw/1/ '4' wäre der passende Array' length'-Eigenschaftswert. – user113716

+2

@David - Oh, ich sehe was du tust. Die '.push()' Methode modifiziert das ursprüngliche Array und gibt die neue Länge zurück. Aus diesem Grund zeigt Ihre 'newArray'-Variable' 4' an. – user113716

1

Neben push wie von patrick beschrieben, wenn Sie eher eine neue Liste erstellen möchten als die alte ändern, können Sie Arrays hinzufügen, zusammen mit Array#concat:

var newArray= cString.concat([['4','Stackoverflow','stackoverflow.com']]); 
+2

Korrigieren Sie mich, wenn ich falsch liege, aber ich denke, das würde OP das gleiche Ergebnis geben, das "$ .merge" gab. Ich denke, Sie müssten 'cString.concat ([['4', 'Stackoverflow', 'stackoverflow.com']])' stattdessen verwenden. – user113716

+0

Sie haben absolut Recht. Danke für den Fingerfail! – bobince

1

Sie verwenden können, fusionieren Funktion wie diese

var newArray = $.merge($.merge([], cString), test); 
Verwandte Themen