为了账号安全,请及时绑定邮箱和手机立即绑定

跨数组访问对象值

跨数组访问对象值

回首忆惘然 2021-06-15 17:22:53
我正在尝试跨数组访问对象值,但每次都显示为未定义。如何让数组“terrain”使用“Dirt”对象变量,例如 SpawnChance?var terrain = new Array("Dirt1", "Dirt2", "Dirt3");var Dirt1 = new Object();Dirt1.Name = 'Dirt1';Dirt1.Level = '1';Dirt1.SpawnChance = '70';var Dirt2 = new Object();Dirt2.Name = 'Dirt2';Dirt2.Level = '1';Dirt2.SpawnChance = '15';var Dirt3 = new Object();Dirt3.Name = 'Dirt3';Dirt3.Level = '1';Dirt3.SpawnChance = '10';if ($("#startingblock").hasClass("Dirt1")) {  var blockcount = (Math.floor(Math.random() * 20) + 1) * 2;  var blockcount = blockcount * blockcount;  var i = 0;  while (i < blockcount) {    var randomizer = (Math.floor(Math.random() * 100) + 1);    var terraintypes = terrain.length;    var terrainrandoms = (Math.floor(Math.random() * terraintypes) + 0);    var newrandomterrain = (terrain[terrainrandoms]);    var randomterrainspawnchance = newrandomterrain.SpawnChance;    terrain.push(newrandomterrain);    alert(newrandomterrain);    i++;  }
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

您正在尝试访问SpawnChance字符串上的方法 - 例如。"Dirt1". 你想要对象本身 - 所以这是问题的根源:

var terrain = new Array("Dirt1", "Dirt2", "Dirt3");

改为这样:

var terrain = new Array(Dirt1, Dirt2, Dirt3);

(或者更好的是:

var terrain = [Dirt1, Dirt2, Dirt3]

没有理由使用Array构造函数而不是文字形式)

请注意,您必须在代码中将其移至这些对象的定义之后。


查看完整回答
反对 回复 2021-06-18
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信