【发布时间】:2019-10-07 23:51:53
【问题描述】:
首先,这是算法:
var removeDuplicates = function(nums) {
for (var i = 0; i < nums.length;) {
if (nums[i] === nums[i + 1]) {
nums.splice(i, 1)
}
else i++
}
return nums
};
它接受一个排序的数字数组并删除所有重复项以返回修改为仅包含唯一数字的原始数组。
我的问题主要是关于 for 循环的使用。在这个 for 循环中,我们省略了第三条语句,而是在 else 条件中递增 i。
如果满足if 条件,循环如何知道检查nums 的下一个索引? IE。如果我们从未点击过else,那么i 是如何增加的?它甚至增加了吗?我知道这可能与我们在 if 条件下拼接(因此缩短)nums 数组的事实有关,但我很难完全理解为什么一旦 if 语句完成一次,循环就不会结束.
【问题讨论】:
-
splice改变长度
标签: javascript arrays algorithm