如何解决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 举报,一经查实,本站将立刻删除。