JS:动态创建对象内的数组

问题描述

我正在做一个简单(也许不是那么简单)的项目/练习,其中包含一个游戏分数计算器。 首先,用户输入要比较的团队数量(2-5)和每个团队的得分(1-12),然后我使用 JQuery 为每个团队的名称和分数创建输入。

到目前为止,一切都很好,关键在于存储这些值。

在之前版本的练习中,我将这些值存储在一个对象内的数组中,因为只有两个团队和五个分数,所以它看起来像这样:

var foo = { // The first string is the team name,the last will be the average score
    team1 : [" ",0],team2 : [" ",0]}

但是现在团队的数量不是固定的,我需要为每个团队创建一个数组。

我使用 for 循环来创建输入,我的想法是在这些循环中动态地声明数组,所以我现在拥有的是:

for (let i = 1; i-1 < nTeams; i++){ // Each team gets its own div and name input
    $('#enTrada').append(`<div class="col" id="params-${i}"></div>`) 
    $(`#params-${i}`).append(` 
        <div class="col">
        <input type="text" class="form-control team-name" id="team-name-${i}" placeholder="Name of ${i}° team">
        </div>`)
    for (let e = 1; e-1 < nscores; e++){ // The inputs for the scores
        $(`#params-${i}`).append(`<input type="number" id="score-${i}-${e}" class="form-control score" placeholder="${e}º score">`);
    }
}

因此第一个循环创建名称输入 team-name-1、team-name-2 等,第二个循环创建分数输入 score-1-1、score-1-2、score-2-1,等等,对吗?

在第一个 for 中,我想声明数组“foo.team+i”(不确定我是否清楚),然后(在不同的函数上)将每个分数输入值分配给“ foo.team+i[e]",因此对象 foo 可能有 2-5 个数组,名称中带有 i 值,我可以根据团队的数量相应地引用它们用户输入。

通过谷歌搜索我发现了一些涉及 eval()解决方案,但从我所读到的内容来看,这是一个很大的禁忌,而且没有人出于很多充分的理由使用 eval()。>

无论如何我可以简单地声明 5 个数组并只使用需要的数组,但是,这不是很优雅,是吗?

a few solutions 使用 window 对象,但我不确定这是否会奏效,因为它会在 window 对象内创建数组,不是我的 foo 对象。只有这样吗?

也许我还没有完全正确理解上面链接解决方案中发生的事情,因为我是 JS 和一般编码的经典新手。如果是这样,我很抱歉浪费你们所有的时间。

如果有人对如何做到这一点有任何见解,或者可能有不同的方法,我会很高兴听到:)

非常感谢大家,这个地方太棒了!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...