[英]How do I substitute a variable for an Array name?
我在这里编写了 JavaScript 来模拟足球比赛中的比赛。 我创建了一个包含 5 个对象的数组,其中每个对象都是一个玩家。 然后我继续遍历数组并使用 if 条件返回一些比较点,基于哪些球员是活跃的,这样我最终可以比较对手的比较点,看看差异是否保证得分目标,或选择六。
代码的后半部分即将到来,但我首先要建立的是下面的代码能够通过在所有情况下用一个名为“whoHasBall”的变量替换团队名称来工作。
这样我就可以使用相同的循环来指向 Eagles 数组或 Giants 数组,我稍后会添加。
下面我粘贴了代码,其中我将团队名称输入为静态名称,此代码通过返回两个活跃玩家并返回比较点总数来工作。
/*-----------EaglesVsGiants5.js------------ */
let whoHasBall = "Eagles";
let getRandNum = function (start, range) {
let getRand = Math.floor((Math.random() * range) + start);
while (getRand > range) {
getRand = Math.floor((Math.random() * range) + start);
};
return getRand;
}
let Eagles = [{
name: "Wentz",
power: 99,
position: "QB",
random: getRandNum(1, 10)
},
{
name: "Jackson",
power: 85,
position: "WR",
random: getRandNum(1, 10)
},
{
name: "Shady",
power: 88,
position: "RB",
random: getRandNum(1, 10)
},
{
name: "Cox",
power: 99,
position: "DT",
random: getRandNum(1, 10)
},
{
name: "Jenkins",
power: 80,
position: "DB",
random: getRandNum(1, 10)
},
];
let TeamComparisonPts = 0;
for (let x = 0; x < Eagles.length; x++) {
let pow = (Eagles[x].power);
function AdjPlayerPts(rand) {
return Math.round(pow / (rand * (getRandNum(1, 10))));
};
let PlayersPts = (AdjPlayerPts(Eagles[x].random));
if ((Eagles[x].position) === "QB" || (Eagles[x].position) === "WR") {
console.log("------------------");
console.log((Eagles[x].name) + " is active on this play and has");
console.log((PlayersPts) + " pts");
TeamComparisonPts += PlayersPts;
};
};
console.log("------------------");
console.log(whoHasBall + " have " + TeamComparisonPts + " Team Comparison Points on this play");
console.log("------------------");
因此,我决定采取下一步行动,替换 Team 数组名称“Eagles”的所有实例,当然,除了变量声明和我将使用变量“whoHasBall”引用的实际数组名称之外,代码崩溃了. 我在全局级别声明了变量,因为我的理解是函数可以超出其本地范围。 顺便说一句,在第一个粘贴的代码中,变量“whoHasBall”仅在底部控制台调用中被引用以调整字符串
我已将代码粘贴到此处:
let whoHasBall = "Eagles";
let getRandNum = function (start, range) {
let getRand = Math.floor((Math.random() * range) + start);
while (getRand > range) {
getRand = Math.floor((Math.random() * range) + start);
};
return getRand;
}
let Eagles = [{
name: "Wentz",
power: 99,
position: "QB",
random: getRandNum(1, 10)
},
{
name: "Jackson",
power: 85,
position: "WR",
random: getRandNum(1, 10)
},
{
name: "Shady",
power: 88,
position: "RB",
random: getRandNum(1, 10)
},
{
name: "Cox",
power: 99,
position: "DT",
random: getRandNum(1, 10)
},
{
name: "Jenkins",
power: 80,
position: "DB",
random: getRandNum(1, 10)
},
];
let TeamComparisonPts = 0;
for (let x = 0; x < whoHasBall.length; x++) {
let pow = (whoHasBall[x].power);
function AdjPlayerPts(rand) {
return Math.round(pow / (rand * (getRandNum(1, 10))));
};
let PlayersPts = (AdjPlayerPts(whoHasBall[x].random));
if ((whoHasBall[x].position) === "QB" || (whoHasBall[x].position) === "WR") {
console.log("------------------");
console.log((whoHasBall[x].name) + " is active on this play and has");
console.log((PlayersPts) + " pts");
TeamComparisonPts += PlayersPts;
};
};
console.log("------------------");
console.log(whoHasBall + " have " + TeamComparisonPts + " Team Comparison Points on this play");
console.log("------------------");
我希望,这对你有用!!!
let getRandNum = function(start, range) { let getRand = Math.floor((Math.random() * range) + start); while (getRand > range) { getRand = Math.floor((Math.random() * range) + start); }; return getRand; } let whoHasBall = { Eagles: [{ name: "Wentz", power: 99, position: "QB", random: getRandNum(1, 10) }, { name: "Jackson", power: 85, position: "WR", random: getRandNum(1, 10) }, { name: "Shady", power: 88, position: "RB", random: getRandNum(1, 10) }, { name: "Cox", power: 99, position: "DT", random: getRandNum(1, 10) }, { name: "Jenkins", power: 80, position: "DB", random: getRandNum(1, 10) }, ] }; let TeamComparisonPts = 0; Object.keys(whoHasBall).map(team => { whoHasBall[team].map(player => { let pow = (player.power); function AdjPlayerPts(rand) { return Math.round(pow / (rand * (getRandNum(1, 10)))); }; let PlayersPts = (AdjPlayerPts(player.random)); if ((player.position) === "QB" || (player.position) === "WR") { console.log("------------------"); console.log((player.name) + " is active on this play and has"); console.log((PlayersPts) + " pts"); TeamComparisonPts += PlayersPts; } }) console.log("------------------"); console.log(team + " have " + TeamComparisonPts + " Team Comparison Points on this play"); console.log("------------------"); })
我已经意识到我在这里做错了什么并修复了我的代码。 我已将其粘贴在下面,但这基本上是我需要做的。
在第一行代码:
let whoHasBall = "Eagles";
我不得不:
删除引号。 在进一步阅读时,我发现这只是将原始数组 Eagles 的引用传递给一个名为 whoHasBall 的新变量,然后它就变成了同一个数组。
我必须将代码行移到 Eagles 数组下方,以便首先初始化 Eagles 数组。
这解决了这个特殊问题。
完整更正的代码在这里:
let getRandNum = function (start, range) {
let getRand = Math.floor((Math.random() * range) + start);
while (getRand > range) {
getRand = Math.floor((Math.random() * range) + start);
};
return getRand;
}
let Eagles = [{
name: "Wentz",
power: 99,
position: "QB",
random: getRandNum(1, 10)
},
{
name: "Jackson",
power: 85,
position: "WR",
random: getRandNum(1, 10)
},
{
name: "Shady",
power: 88,
position: "RB",
random: getRandNum(1, 10)
},
{
name: "Cox",
power: 99,
position: "DT",
random: getRandNum(1, 10)
},
{
name: "Jenkins",
power: 80,
position: "DB",
random: getRandNum(1, 10)
},
];
let whoHasBall = Eagles;
let TeamComparisonPts = 0;
for (let x = 0; x < whoHasBall.length; x++) {
let pow = (whoHasBall[x].power);
function AdjPlayerPts(rand) {
return Math.round(pow / (rand * (getRandNum(1, 10))));
};
let PlayersPts = (AdjPlayerPts(whoHasBall[x].random));
if ((whoHasBall[x].position) === "QB" || (whoHasBall[x].position) === "WR") {
console.log("------------------");
console.log((whoHasBall[x].name) + " is active on this play and has");
console.log((PlayersPts) + " pts");
TeamComparisonPts += PlayersPts;
};
};
console.log("------------------");
console.log(whoHasBall + " have " + TeamComparisonPts + " Team Comparison Points on this play");
console.log("------------------");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.