原本的正确写法:我改了之后的:箭头部分是改动的。源代码:正确写法:改过之后:
1 回答
绝地无双
TA贡献1946条经验 获得超4个赞
又++ 又-- 死循环了呗,
如果不判断 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--;
直到正无穷~
添加回答
举报
0/150
提交
取消