随机从5个对象中的一个获取数据

时间:2017-03-05 20:30:37

标签: javascript jquery

我的代码出现问题。我有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']);




1 个答案:

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