时间:2021-07-01 10:21:17 帮助过:23人阅读
下面我们就通过简单代码示例来介绍js中数组去重的三种常用方法。
第一种方法:for循环(两次) + 新数组
思路:
1.构建一个新的数组存放结果
2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比
3.若结果数组中没有该元素,则存到结果数组中
//方法一 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; function removeDuplicatedItem(arr) { for(var i = 0; i < arr.length-1; i++){ for(var j = i+1; j < arr.length; j++){ if(arr[i]==arr[j]){ arr.splice(j,1);//console.log(arr[j]); j--; } } } return arr; } arr2 = removeDuplicatedItem(arr); console.log(arr); console.log(arr2);
第一种方法就可以基本满足我们的需求了,对arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]这样的简单数组只要使用类型比较就可以了,但如果数组很长呢?如此遍历数组,数组长度为n,那么时间复杂度为n*n。显然第一种方法的性能还有待提升。接下来是第二种方法,用到数组排序,在排序的过程去除重复的值。
第二种方法:for循环(一次) + sort()排序 + 新数组
原数组长度不变但被按字符串顺序排序,借助新数组 ,判断新数组中是否存在该元素如果不存在则将此元素添加到新数组中
//方法二 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; function removeRepEle(ar) { var ret = [], end;//临时变量用于对比重复元素 ar.sort();//将数重新组排序 end = ar[0]; ret.push(ar[0]); for (var i = 1; i < ar.length; i++) { if (ar[i] != end) {//当前元素如果和临时元素不等则将此元素添加到新数组中 ret.push(ar[i]); end = ar[i]; } } return ret; } arr2 = removeRepEle(arr); console.log(arr);//[ 1, 1, 1, 1, 23, 23, 3, 5, 5, 6, 7, 8, 9, 9 ] console.log(arr2);//[ 1, 23, 3, 5, 6, 7, 8, 9 ]
第二种方法有一定的局限性,因为数组是先进行排序,然后再去重的,所以最后返回的结果是js数组去重并排序后的结果。如果要求不改变数组的顺序去重,那这种方法就不可取了。
第三种方法(推荐):for循环(一次) + 新数组 + 新对象
利用空对象来记录新数组中已经存储过的元素
//方法三 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; var o={}; var new_arr=[]; for(var i=0;i<arr.length;i++){ var k=arr[i]; if(!o[k]){ o[k]=true; new_arr.push(k); } } console.log(new_arr);
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。更多相关教程请访问JavaScript视频教程,jQuery视频教程,bootstrap教程!
以上就是JavaScript中如何实现数组去重?js中数组去重的三种方法(代码实例)的详细内容,更多请关注Gxl网其它相关文章!