2016-05-04 5 views
2

Ich bin ziemlich neu in der Programmierung. Meistens kann ich die Lösung für meine Probleme online finden, aber diesmal nicht. Ich habe mehrere Beiträge darüber gefunden, wie man eine Variable in ein Array pushen kann. Wenn ich das Array jedoch console.log anlege, um zu überprüfen, ob die Variable tatsächlich im Array ist, gibt er den Namen der Variablen, die ich möchte, nicht zurück. Was ich zurückbekomme ist: [Karte, Karte] und was ich sehen möchte ist: [card_Fireball, card_Waterbolt, etc]. Der Code, den ich verwenden ist:Drücken Sie eine Var in einem Array

var Deck = []; 

function Card(name, type, cost, points, damage, heal){ 
     this.name = name; 
     this.type = type; 
     this.cost = cost; 
     this.points = points; 
     this.damage = damage; 
     this.heal = heal; 
    } 

var card_Fireball = new Card("Fireball", "spell", 2, 1, 3, 0); 
var card_Waterbolt = new Card("Waterbolt", "spell", 2, 1, 3, 0); 

Deck.push(card_Fireball); 
Deck.push(card_Waterbolt); 

console.log(Deck); 

Die Lösung wahrscheinlich ist ziemlich einfach, aber ich kann es nicht mit meinem Anfänger Erfahrung heraus: P Danke für die Hilfe !!

+1

Sie Ich werde den Namen der Variablen nicht sehen. Der Konsole ist es egal, was Sie die Variable genannt haben, nur was sie wert ist. Da du eine "Karte" erstellt hast, wird "Karte" angezeigt. Wenn Sie auf das klicken, was Sie in der Konsole * sehen *, sehen Sie, dass es die richtigen Objekte hat. –

+0

Wenn Sie jede Karte in der Konsole öffnen, sehen Sie alle Attribute der Karte, die Sie festgelegt haben –

+0

Versuchen Sie es mit console.dir statt console.log. – nickles80

Antwort

1

Zugriff auf die Kartennamen mit "Deck [x] .NAME", wobei x der Index der Karte in dem Array Deck ist.

Um alle Namen zu erhalten:

for(i=0;i<Deck.length;i++){ 
    console.log(Deck[i].name); 
} 

Sie die gleiche Art und Weise alle Ihre Karten Angenommen nennen, wie Sie in Ihrem Beispiel haben, können Sie diese verwenden, um die Variablennamen zu erhalten:

for(i=0;i<Deck.length;i++){ 
    console.log('card_' + Deck[i].name); 
} 
+0

Danke! Das ist, was ich gesucht habe. Danke auch allen anderen für die Hilfe! Viel gelernt! – RvEng

2

Sie alles zu tun, sind korrekt nur ersetzen console.log mit folgenden:

console.log(JSON.stringify(Deck)); 
1

Wenn Sie ein Array der Variablennamen erhalten möchten Sie verwendet haben, sind diejenigen, auf dem Weg verloren.
Falls Sie ein Array der Namen oder einer anderen Eigenschaft wünschen, versuchen Sie, ein neues Array zu erstellen und jeden Wert darauf zu schieben.

var names = []; 
Deck.map(function(v) { names.push(v.name) }) 
console.log(names); 

Output:

["Fireball", "Waterbolt"]