2016-12-05 2 views
-2

In dem folgenden Code sehen Sie, dass Arrayi als Array erkennt - i. Ist dieses System in js integriert? Ich experimentierte und es funktionierte nicht, wenn ich array (i) anstelle von arrayi schrieb. Die Frage erstreckt sich dann über alle hinaus, um zu fragen, ob Sie iarray, ariray, arrayii oder array (i * i) tun könnten (wollen Sie einfach die Syntax herausfinden, wie das funktioniert).Javascript ist diese Funktion in JS integriert?

var array = [] 
 
var arrayAmount = prompt("Select number of array") 
 

 
for (var i = 0; i < arrayAmount; i++) { 
 
    var arrayi = array 
 
    arrayi.push([prompt("Select name for array " + (i + 1)), ["sub-element 1", "sub-elemet 2"], ]) 
 
    console.log(arrayi) 
 
} 
 
console.log(array1)

Edit: Ich überprüfte, ob der Code, wenn die eigenen Reihen seiner erklärt kopiert ein anderes Array statt für Schleife funktionieren würde. Stellt sich heraus, es hat nicht funktioniert und erklärt arrayi als arrayi statt array1 oder array2

+1

Sie ordnen 'arrayi = array' so' arrayi' * ist * 'array' ... Nicht sicher, was Ihr fragen? –

+0

Woher kommt 'player'? Magst du 'array [i]'? –

+0

Ihre Live-Demo führt den Fehler: 'Reference: Spieler – Quentin

Antwort

0

Du verwechselst mehrere JS-Konzepte. Ich werde einige Annahmen machen, um einige Dinge zu erklären, aber fühlen Sie sich frei, mich zu korrigieren, und ich werde meine Antwort anpassen.

Ich glaube, Sie bedeutete einen Wert an einem bestimmten Index in dem Array zuweisen, aber was Sie am Ende tut eine Variable arrayi schaffen, die einen Verweis auf array ist:

var array = []; 
array[1] = "foo"; 
console.log(array); // [undefined, "foo"] 

Was Sie stattdessen tat, war erstellen sie einen Verweis, die zwei unterschiedliche Variablennamen bedeutet, wird auf das gleiche Objekt/Array bewerten:

var array = []; 
var reference_to_array = array; 

reference_to_array.push("foo"); 

console.log(array); // ["foo"] 
console.log(reference_to_array); // ["foo"] 

Ihre ursprüngliche Frage enthält: „und es funktioniert nicht, wenn ich Array geschrieben (i) statt von arrayi ".

Um die Antwort lautet: array(i) sollte in array[i] bei der Arbeit mit Arrays geändert werden.

Statt Ihre ursprüngliche Frage der Festsetzung beenden Sie neue Variablen zu schaffen up.

ursprünglichen Code zu beheben:

var array = []; 
 
// Added parsing to an integer 
 
var arrayAmount = parseInt(prompt("How many items do you want to add to the array?")); 
 

 
for (var i = 0; i < arrayAmount; i++) { 
 
    // Method 1: directly access the index 
 
    //array[i] = [ prompt("Select name for array " + (i + 1)), ["sub-element 1", "sub-element 2"] ]; 
 
    
 
    // Method 2 (Recommended): push a new element onto the end of the array 
 
    array.push([ prompt("Select name for array " + (i + 1)), ["sub-element 1", "sub-element 2"] ]); 
 

 
    // Log this element 
 
    console.log(array[i]); 
 
}

+0

Ah, das war, was ich vorher versuchte, aber in diesem Fall mache ich mehrere Arrays (array1 array2 ...), die alle separate Elemente enthalten. Wenn in dem Code, den ich oben geschrieben habe, ausgeführt wird, wird gefragt, wie viele Arrays es machen soll, fragt dann Namen für diese Arrays. Lass uns den Code durchgehen. "Select Anzahl der Array" I 2 eingeben "für 1-Array Namen auswählen" George "name Wählen array" Katie console.log (array1) [George [ "Subelement 1" , "sub-elemet 2"],] console.log (array2) [Katie ["Unterelement 1", "Unterelement 2"],] –

+0

@AlexM. Aha!Nun, es ist definitiv möglich, neue Arrays zu erstellen und den Index im Variablennamen zu verwenden, aber Sie müssten 'eval()' dafür verwenden, was unnötiger und wirklich schlechter Code ist. Stattdessen benutze einfach meine Lösung: Du hast immer noch mehrere Arrays und kannst sie über 'array [i]' aufrufen, der einzige Unterschied ist, dass du nur einen Variablennamen 'array' * hast (und viel sichereren Code!) *. –

+0

Ok danke! Ich weiß nicht viel über Code, wahrscheinlich offensichtlich. –

Verwandte Themen