我一直在努力解决这个问题几个小时,但我绝对没有运气。
程序在第一次迭代中运行没有任何问题(数字正确地拼接到数组中并且结果完美地打印到控制台)但是在第二次运行时我收到此错误: 未捕获的TypeError:无法调用未定义的方法'splice'
此时没有任何内容打印到控制台日志。
这是第一个功能:
var gameRound = [
[],
[]
];
fight();
function fight() {
var r = 10;
var towel = false;
var i = 1;
while (i <= r && towel == false) {
round(i);
console.log("ROUND ", i);
console.log(boxerA[0]);
console.log("Punches Thrown: ", gameRound[i][0]);
console.log("Punches Landed: ", gameRound[i][1]);
console.log("Jabs Thrown: ", gameRound[i][2]);
console.log("Jabs Landed: ", gameRound[i][3]);
console.log("Power Thrown: ", gameRound[i][4]);
console.log("Power Landed: ", gameRound[i][5]);
console.log("Fatigue: ", boxerA[28]);
console.log("Damage: ", boxerA[29]);
console.log(boxerB[0]);
console.log("Punches Thrown: ", gameRound[i][6]);
console.log("Punches Landed: ", gameRound[i][7]);
console.log("Jabs Thrown: ", gameRound[i][7]);
console.log("Jabs Landed: ", gameRound[i][9]);
console.log("Power Thrown: ", gameRound[i][10]);
console.log("Power Landed: ", gameRound[i][11]);
console.log("Fatigue: ", boxerB[28]);
console.log("Damage: ", boxerB[29]);
i++;
}
}
我列出错误的函数和行:
function round(i)
{
// ...
gameRound[i].splice(0,0,numPunchesTA,numPunchesLA,numJabsTA,numJabsLA,numPowerTA, numPowerLA, numPunchesTB, numPunchesLB,numJabsTB,numJabsLB,numPowerTB,numPowerLB);
}
当我测试它时,变量i仍然计为“2”,所以我不确定为什么下一行没有被拼接到数组中。
如果我输入太多无关的代码,我很抱歉,但这是我在这个论坛中的第一个问题,也是我在JavaScript中的第一个大作业,我绝对感到沮丧。
谢谢!
gameRound[i] = [numPunchesTA,numPunchesLA, ...];
完美无缺!在我使用之前:
gameRound = [[i],gameRound[i] = [numPunchesTA,numPunchesLA, ...]];
除了另一种问题外,其余的事情都没有了。谢谢Felix King!
答案 0 :(得分:1)
数组索引从0
开始。您的数组必须位于0
和1
位置的元素。因此,如果i
增加到2
,则会收到错误,因为gameRound[2]
不存在。
如果要将新数组添加到外部数组,则必须明确指定它:
gameRound[i] = [numPunchesTA,numPunchesLA, ...];
或者您必须使用10个空数组初始化gameRound
。
或者您必须从0
开始计算,直到i
到达2
:
var i = 0;
while (i < 2 && towel == false) {
由于您没有真正告诉我们您要使用代码实现什么目标,因此很难说出适当的解决方案是什么。