介绍
这篇文章主要介绍了JS如何实现的数组去除重复数据算法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
JS的作用是什么
1,能够嵌入动态文本于HTML页面。2,对浏览器事件做出响应。3,读写HTML元素。4、在数据被提交到服务器之前验证数据。5,检测访客的浏览器信息。6,控制饼干,包括创建和修改等7,基于node . JS技术进行服务器端编程。
在JS中经常会遇到去除数组中重复数据的需求,在此介绍四种算法以实现JS数组去重的功能。
<强> 1。速度最快算法:对象键值对法强>
<>强实现思路:强>新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。
//注意点:,判断,是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样,例如:,[1],一个(“1“),。解决上述问题还是得调用“indexOf”。//速度最快,占空间最多(空间换时间) function 独特(数组){ var 才能;n =, {},, r =, [],, len =, array.length,, val,,类型; for 才能;(var 小姐:=,0;,小姐:& lt;, array.length;,我+ +),{ ,,,val =,数组(我); ,,,type =, typeof val; ,,,if (! n (val)), { ,,,,,n (val),=,(类型); ,,,,,r.push (val); ,,,},else if (n (val) .indexOf(类型),& lt;, 0), { ,,,,,n (val) .push(类型); ,,,,,r.push (val); ,,,} ,,} return 才能;r; }//测试代码: var arr=[1、2、3、4、5日,29日,5、3、1、2]; var rel=独特(arr); console.log (rel);
运行结果:
<强> 2。最巧妙算法:优化遍历数组法强>
<>强实现思路:强>获取没重复的最右一值放入新数组。(检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)
function unique1(数组){ var 才能;r =, []; ,,(var 小姐:=,0,,l =, array.length;, i运行结果:
<强> 3。算法:排序后相邻去除法强>
<>强实现思路:强>给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。
//将相同的值相邻,然后遍历去除重复值 function unique2(数组){ array.sort才能(); var 才能;re=[array [0]]; ,,(var 小姐:=,1;,小姐:& lt;, array.length;,我+ +){ ,,,如果,[我]数组!==,再保险[re.length-1]) ,,,{ ,,,,,re.push(阵列[我]); ,,,} ,,} return 才能;再保险; }//测试代码: var arr=[1、2、3、4、5日,29日,5日,2,3,1]; var rel=unique2 (arr); console.log (rel);运行结果:
<强> 4。算法:数组下标判断法强>
<>强实现思路:>强如果当前数组的第我项在当前数组中第一次出现的位置不是我,那么表示我第项是重复的,忽略掉。否则存入结果数组
function unique3(数组){ var 才能;n =, [array[0]];,//结果数组//才能从第二项开始遍历 ,,(var 小姐:=,1;,小姐:& lt;, array.length;,我+ +),{ ,,,//如果当前数组的第我项在当前数组中第一次出现的位置不是我, ,,,//那么表示我第项是重复的,忽略掉。否则存入结果数组 ,,,if (array.indexOf(数组[我]),==,我),n.push(阵列[我]); ,,} return 才能;n; }//测试代码: var arr=[1、2、3、4、5日,29日,3、4、2、5、1]; var rel=unique3 (arr); console.log (rel);运行结果:
JS如何实现的数组去除重复数据算法