2017-03-05 7 views
1

私のコードに問題があります。私は5つのオブジェクトを持っていて、オブジェクトの1つをランダムに選択してそこからデータを取得したいと考えています。私はc1['cn']とオブジェクトの1つからデータを呼び出すことができるので、私は1から5までの数字を選んでその数字をそのオブジェクトからデータを呼び出すランダムなものに置き換えると思った。ランダムに5つのオブジェクトの1つからデータを取得

var ram = Math.floor((Math.random() * 5) +1); 
var ref = 'c' + ram; 
console.log(ref['cn']); 

にconsole.logは、誰もが私が間違っているのものを私に言うことができる「未定義」

を言っています。ありがとう。

あなたは私のコードをコードスニペットで見ることができます。

function cardsLab (cname, dis, t1, t2, t3){ 
 
\t this.cn = cname; 
 
\t this.d = dis; 
 
\t this.s1 = t1; 
 
\t this.s2 = t2; 
 
\t this.s3 = t3; 
 
} 
 
var c1 = new cardsLab('card No1', 'blar', 8, 5, 10); 
 
var c2 = new cardsLab('card No2', 'blar', 6, 10, 9); 
 
var c3 = new cardsLab('card No3', 'blar', 7, 5, 3); 
 
var c4 = new cardsLab('card No4', 'blar', 10, 4, 9); 
 
var c5 = new cardsLab('card No5', 'blar', 8, 6, 7); 
 

 

 
var ram = Math.floor((Math.random() * 5) +1); 
 
var ref = 'c' + ram; 
 
var x = ref+"['cn']"; 
 
var z = x; 
 
console.log(x); 
 
console.log(ref['cn']); 
 
console.log(c1['cn']);

+0

試し 'ウィンドウ[参照] [ 'CN:それも、あなたは、むしろこのように数5

をハードコーディングする必要よりも、それらをカウントする.lengthプロパティを使用できることを意味します'] 'または' this [ref] [' cn '] 'のようになります。 – Titus

答えて

2

あなたは、アレイ内のすべてのカードを置く方がいいでしょう。動的に参照する方がはるかに簡単です。

function cardsLab (cname, dis, t1, t2, t3){ 
 
\t this.cn = cname; 
 
\t this.d = dis; 
 
\t this.s1 = t1; 
 
\t this.s2 = t2; 
 
\t this.s3 = t3; 
 
} 
 
var cards = []; 
 
cards[0] = new cardsLab('card No1', 'blar', 8, 5, 10); 
 
cards[1] = new cardsLab('card No2', 'blar', 6, 10, 9); 
 
cards[2] = new cardsLab('card No3', 'blar', 7, 5, 3); 
 
cards[3] = new cardsLab('card No4', 'blar', 10, 4, 9); 
 
cards[4] = new cardsLab('card No5', 'blar', 8, 6, 7); 
 

 

 
var ram = Math.floor((Math.random() * cards.length)); 
 
var x = cards[ram]; 
 
console.log(x);

+0

ありがとうございます。これは素晴らしい作品です。 – DigitalOedo

関連する問題