我遇到了一个问题,我正在写一个挑战的代码。
我写的代码进入了一个无限循环,我不知道哪里出了问题。
var wiggleMaxLength = function(nums) {
let wiggleSteps = 1;
let actualDiff, pastDiff, i;
for (i = 1; i < nums.length; i++) {
actualDiff = (nums[i] - nums[i - 1])
if (nums[i] = 0) {
nums.splice(i, 1);
i--;
continue;
} else if ((pastDiff > 0 && actualDiff < 0) || (pastDiff < 0 && actualDiff > 0) || (i = 1)) {
pastDiff = actualDiff;
wiggleSteps++;
} else {
break;
}
}
return wiggleSteps;
};
第6行有一个错别字(=
而不是==
或===
)
if (nums[i] = 0)
我想你没有看到它。
这将值0
赋给nums[i]
,而不是将nums[i]与0进行比较。
if
更改为
if (nums[i] == 0)
或
if (nums[i] === 0)
注意在第9行第3个条件i = 1
而不是i == 1
或i === 1
中还有一个额外的拼写错误,这就是导致无限循环的原因(因为计数器'i'总是被重新分配给1)。程序总是运行在else if
分支上。