我的代码出现问题。我有5个对象,我想随机选择一个对象并从中获取数据。我可以使用c1['cn']
从其中一个对象调用数据,所以我想如果我从1到5中选择一个数字并用随机的数字替换它将从该对象调用数据。
var ram = Math.floor((Math.random() * 5) +1);
var ref = 'c' + ram;
console.log(ref['cn']);
console.log正在说' undefined'
谁能告诉我我做错了什么。感谢。
您可以在代码段中看到我的代码。
function cardsLab (cname, dis, t1, t2, t3){
this.cn = cname;
this.d = dis;
this.s1 = t1;
this.s2 = t2;
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 :(得分:2)
最好将所有卡片放入阵列中。它使动态引用它们变得更加容易。它甚至意味着您可以使用.length
属性来计算它们,而不需要对数字5进行硬编码。
像这样:
function cardsLab (cname, dis, t1, t2, t3){
this.cn = cname;
this.d = dis;
this.s1 = t1;
this.s2 = t2;
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);