数组去重的思路,突然感觉挺有趣的,来整理一下
两个for
循环比较的,如下
function removeRepeat(arr){ for( var i = 0; i < arr.length; i++){ for ( var j = i + 1; j < arr.length; i++){ if ( arr[i] == arr[j] ){ arr.splice(j ,1); } } } return arr; }
作为一个菜鸟..我对这段代码是没什么问题的,实际上.. 我的电脑打不开这个网页...等了一会儿页面就提示崩溃了....
看到别人的解释是说
for 循环中使用 splice 会影响效率,而且循环时 因为 splice 后修改了长度 所以 循环时arr长度发生改变,这是一件危险的事情
总的意思就是说,上面的做法并不合适
当然,改改还是可以用两层 for 循环做的,不过没必要循环两次做这个
fucntion unique(array){ var arr = []; for ( var i = 0; i < array.length; i++ ){ if ( arr.indexOf(array[i]) == -1 ){ arr.push(array[i]); } } return arr; }
用indexOf 检查有没有重复项,然后push 给新数组 arr;
`