Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript leetcode.com-删除元素-为什么';ti++;工作_Javascript_Algorithm - Fatal编程技术网

Javascript leetcode.com-删除元素-为什么';ti++;工作

Javascript leetcode.com-删除元素-为什么';ti++;工作,javascript,algorithm,Javascript,Algorithm,我正在研究leetcode的一个算法 以下是描述: 给定一个数组和一个值,请在中删除该值的所有实例 放置并返回新的长度。不要为这些文件分配额外的空间 另一个数组,必须使用恒定内存就地执行此操作。这个 元素的顺序可以更改。不管你留下什么 超出新的长度。示例:给定的输入数组nums=[3,2,2,3], val=3您的函数应该返回length=2,其中前两个 NUM的元素为2 我的问题基于以下代码: var removeElement = function(nums, val) { var

我正在研究leetcode的一个算法

以下是描述:

给定一个数组和一个值,请在中删除该值的所有实例 放置并返回新的长度。不要为这些文件分配额外的空间 另一个数组,必须使用恒定内存就地执行此操作。这个 元素的顺序可以更改。不管你留下什么 超出新的长度。示例:给定的输入数组nums=[3,2,2,3], val=3您的函数应该返回length=2,其中前两个 NUM的元素为2

我的问题基于以下代码:

var removeElement = function(nums, val) {

    var count = 0;

    for(i=0; i<nums.length; i++){

        if(nums[i] == val) {
            nums.splice(i,1);
            i--;
        }
    }

};
var removelement=函数(nums,val){
var计数=0;

for(i=0;iSplice从数组中删除i处的元素,因此如果要继续正常迭代,则需要保持在当前位置。由于for循环中有一个i++,它通常会向前移动一个位置。因此,在保持在相同位置之前,需要向后移动一步

nums=[3,2,2,3]
val=3;
//first iteration
i=0
current=3//===val
nums.splice(0,1);//nums=[2,2,3]
i--;//i=-1

//next iteration
i++;//i=0
current=2;

//next iteration
i++;//i=1
current=2;

//next iteration
i++;//i=2
current=3;
nums.splice(2,1);//nums=[2,2]
i--;//i=1

//next iteration
i++;//i=2 === nums.length => break
在[3,2,2,3]的情况下,使用i++而不是i并不重要,因为它会跳过不相关的索引1和2