2016-05-23 7 views
-4

Beim Versuch, Elemente in Javascripts auf ein Array schieben es einen Fehler gibt, zeigen die folgenden Pseudo-Code, was geschieht:Array [key] .push wird nicht in JavaScript definiert

var data = new Array(); 
for(...) { 
    data[key].push(item[i]); 
} 

Es zeigt die folgende Fehler:

Cannot read property 'push' of undefined 

Dank

+5

Weil 'data' das Array ist. Wenn 'data [key]' kein Array enthält, werden Sie undefiniert. Betrachte 'var data = [1,2,3,4,5];' und 'key' ist der erste Index (1). Sie versuchen, eine Array-Methode für eine Ganzzahl zu verwenden, die offensichtlich nicht funktioniert. –

+0

@SterlingArcher Hat Ihnen die Antwort gegeben. –

+1

Sie können die Grundlagen zu Arrays aus Lernprogrammen und Dokumentation lernen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array, http://eloquentjavascript.net/04_data.html . * Vielleicht * willst du 'data [key] = item [i]'. –

Antwort

0

Wenn Sie ein 2D-Array benötigen, müssen Sie jedes Element des äußeren Array initialisieren ein Array zu sein.

// Have to check every array item, if it's not an array already, make it so 
for(...) { 
    if (!data[key]) { 
     data[key] = []; 
    } 
    data[key].push(item[i]); 
} 

Sie könnten immer folgende tun, wenn Sie die Anzahl der inneren Arrays, die Sie benötigen:

var data = [[],[],[],[],[],[]]; 

In Ihrem Beispiel, da sie Variablennamen Schlüssel ist, ich nehme an, Sie eigentlich eine wollen Objekt von Arrays. Wenn Sie die Schlüssel im Voraus kennen, können Sie das folgende Literal verwenden.

var data = { 
    myKey1: [], 
    myKey2: [] 
} 
+0

Sie definieren ein Array von Daten [Schlüssel] angenommen, dass Sie den Schlüssel kennen, aber in meinem Fall ist der Schlüssel während der Laufzeit innerhalb einer for-Schleife definiert –

+0

Aber ich weiß nicht den Schlüssel voraus, ich weiß nicht wie viele von denen ich brauche, das ist mein Problem, ich muss für eine dynamische Weise zu 2D-Array zu definieren, Danke, –

+0

Dann erste Code-Schnipsel ist das, was Sie suchen –

Verwandte Themen