2016-05-04 4 views
2

Im довольно новый для программирования. В основном я могу найти решение своих проблем в Интернете, но не в этот раз. Я нашел серверные сообщения о нажатии переменной в массив, однако, когда я console.log массив, чтобы проверить, действительно ли переменная находится в массиве, он не возвращает имя переменной, которую я хочу. Я вернусь: [Карточка, Карточка], и я хочу видеть: [card_Fireball, card_Waterbolt и т. Д.]. Код, который я использую:Push a var в массиве

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); 

решения, вероятно, довольно простое, но я не могу понять это с моим начинающим опытом: P Спасибо за помощь !!

+1

You «Не будем видеть имя переменной. Консолле не волнует, что вы назвали переменной, только то, что это значение. Поскольку вы создали «Карту», ​​она покажет «Карту». Если вы нажмете на то, что вы * * видите в консоли, вы увидите, что у него есть правильные объекты. –

+0

, если вы открываете каждую карту в консоли, вы увидите все атрибуты установленной карты. –

+0

Попробуйте использовать console.dir вместо console.log. – nickles80

ответ

1

Доступ имена карт с "Deck [х] .name", где х индекс карты в колоде массива.

Чтобы получить все имена:

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

Предполагая, что вы называете все ваши карты точно так же, как вы делали в вашем примере, вы могли бы использовать это, чтобы получить имена переменных:

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

Спасибо! Это то, что я искал. Также благодарим всех остальных за помощь! Узнал много! – RvEng

2

Вы делаете все правильно, просто замените console.log со следующим:

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

Если вы хотите, чтобы получить массив имен переменных, которые вы использовали, те теряются на пути.
Если вам нужен массив имен или любое другое свойство, попробуйте создать новый массив и нажать на него каждое значение.

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

Выход:

["Fireball", "Waterbolt"] 
Смежные вопросы