为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉风的咖菲猫 2018-10-10 14:19:51
原本的正确写法:我改了之后的:箭头部分是改动的。源代码:正确写法:改过之后:
查看完整描述

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值为1
Object {1: 1, undefined: 1}

第五次循环
i为2
同样数组中只有一个值所以arr[i]还是undefined;
但是obj[undefined]为1,
所以再去删除数组, (当前数组为空);
同时i--;

直到正无穷~


查看完整回答
反对 回复 2018-11-05
  • 1 回答
  • 0 关注
  • 519 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信