数组去重,主要对数字型数组去重
function func(arr)
{if(arr.every(function(elem){return typeof elem=='number'}))
var arr1=arr.sort(function(a,b){return a-b;});//存储排序后的数组
for(var i=0,n=arr1.length;i<n;i++)
while(arr1[i]==arr1[i+1])
{arr1.splice(i+1,1);
arr.splice(arr.indexOf(arr1[i+1]),1);
}
return arr;
}
alert(func([1, 1,2,2,3]));
//浏览器一直反应不过来??什么情况??请解释一下这个函数哪里有问题??
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个写代码风格有待改进,大括号不对齐、缩进不规则读起来不费劲么?。。
几个需要改正的地方:
indexOf方法要在arr上调用,像这样:arr.indexOf(num)每次删除元素需要更新n的值
边界条件设置错误,应该是
i + 1 < n而不是i < nsort默认会按升序排列,不用再加参数sort函数就地修改值,而且你的代码里arr和arr1都指向了同一个内存地址,需要通过arr.slice(0)深度拷贝一下。下面修改之后运行正常了。