[英]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.