簡體   English   中英

如何用變量替換數組名稱?

[英]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";

我不得不:

  1. 刪除引號。 在進一步閱讀時,我發現這只是將原始數組 Eagles 的引用傳遞給一個名為 whoHasBall 的新變量,然后它就變成了同一個數組。

  2. 我必須將代碼行移到 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM