数组去重算法,改了个地方就跑不通了,浏览器卡死,但不知道问题在哪?

原本的正确写法:

https://img3.mukewang.com/5bdfb0a30001081504390300.jpg

我改了之后的:

https://img3.mukewang.com/5bdfb0ad0001115d04370292.jpg

箭头部分是改动的。

源代码:
正确写法:

https://img1.mukewang.com/5bdfb0be000196d203360299.jpg

改过之后:

https://img3.mukewang.com/5bdfb0d00001d29313390282.jpg

拉风的咖菲猫
浏览 520回答 1
1回答

绝地无双

又++ 又-- 死循环了呗,如果不判断 arr[i]!=undefined 空数组的时候就会死循环,比如测试用例:[1,1,1,1];真逗, 请问是哪位踩得我, 哪句说的不对?题主问的服务器卡死是为什么? 除了我有一个人说的是为什么卡死吗?既然这么不开窍,我再解释一下为什么会死循环~还是拿测试用例[1,1,1,1];第一次循环对应数组index为0 value为1第一次进来obj肯定为空, 缓存一个{1: 1};第二次循环数组index为1 value为1;判断出有一个value为 1(obj : {1: 1});则对数组删除index为1的数据.同时对i--, 当进入下一次循环的时候i又++, 所以可以理解到下次循环i不变,i为1第三次循环同理,i为1第四次进入循环时i为1,但是arr的长度为1,则 arr[1]为undefined,但是没有判断是否为undefined,直接判断obj[undefined]因为不存在直接跳出到obj[temp]=1;此时temp为undefined即为把obj声明一个属性为undefined值为1Object {1: 1, undefined: 1}第五次循环i为2同样数组中只有一个值所以arr[i]还是undefined;但是obj[undefined]为1,所以再去删除数组, (当前数组为空);同时i--;直到正无穷~
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript