首页 / JAVASCRIPT / js数组去重算法
js数组去重算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了js数组去重算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1911字,纯文字阅读大概需要3分钟。
内容图文
![js数组去重算法](/upload/InfoBanner/zyjiaocheng/1086/8f46096359174ff48ddcb7244282220a.jpg)
来来来 ,整理完数组排序 ,咱们再来看看数组去重 。这个可以说有很多方式了 。之前看过的算法方式太多 ,导致思路其实有时候真的很受限,不过也是整理来学习用的 ,如有雷同 ,纯属巧合啊 ,小婊贝们~
首先呢 ,我们来看看思路比较直接的方法,基本思路就是声明一个新数组arr_n,将【0】这个成员压入arr;然后从【1】开始循环当前数组,设置一个变量a,给他一个初始值1;内层嵌套从【0】对arr_n数组的循环 ,用外层对当前数组循环的当前项this[i]和arr_n的每一项arr_n[j]进行对比,如果有相等,则将0赋值给a,然后break退出内层循环;判断a的值,若等于初始值则说明遍历完arr_n并没有重复,则将当前this[i]压入新数组 arr_n,以此类推 ,直到所有排序完成 ,返回新数组 arr_n; 代码如下:
Array.prototype.unique=function(){ var arr_n=[]; arr_n.push(this[0]); for(var i=1;i<this.length;i++){ var a=1; for(var j=0;j<arr_n.length;j++){ if(this[i]==arr_n[j]){ a=0; break; } } if(a==1){ arr_n.push(this[i]); } } return arr_n; }; var a=[1,3,4,3,5,2,5]; a.unique();
最近在看JavaScript面向对象编程这本书时发现了一个特别好的API是indexOf,后来网上查了查用在数组上其实也是很棒的有木有 ,不过还是有坑的 ,下面关于indexOf对数组用法是复制来的 ,因为觉得很浅显易懂了,大家共勉 ,大家看看别踩了坑 就行;再者就是 indexOf是ES5的语法 ,不支持IE8以下的浏览器(无奈摊手~ )
let arr = [‘orange‘, ‘2016‘, ‘2016‘]; arr.indexOf(‘orange‘); //0 arr.indexOf(‘o‘); //-1 arr.indexOf(‘2016‘); //1 arr.indexOf(2016); //-1这里没把例子拆的那么细,四个用例足以说明问题。 arr.indexOf(‘orange‘) 输出 0 因为 ‘orange‘ 是数组的第 0 个元素,匹配到并返回下标。 arr.indexOf(‘o‘) 输出 -1 因为此方法不会在每一个元素的基础上再次执行 indexOf 匹配。 arr.indexOf(‘2016‘) 输出 1 因为此方法从头匹配直到匹配到时返回第一个数组元素的下表,而不是返回全部匹配的下标。 arr.indexOf(2016) 输出 -1 注意:这里不会做隐式类型转换。
以下是运用indexOf的代码段:
Array.prototype.unique1=function(){ var arr_n=[]; arr_n.push(this[0]); for(var i=1;i<this.length;i++){ if( arr_n.indexOf(this[i])==-1){ arr_n.push(this[i]); } } return arr_n; } var b=[12,3,4,5,3,5,3,7,12]; b.unique1();
还有一种方法 ,我认为是比较好的了 ,简洁又不存在兼容性问题,思路也很简单 ,先声明一个空数组和一个object对象,循环遍历当前数组,将数组的每一项当做object的属性来看 ,判断对象是否已有当前项的属性即可 ,若不重复,将当前this[i]push进新数组,给object的this[i]属性赋个值即可,最后返回新数组;代码如下:
Array.prototype.unique2=function(){ var arr_n=[],obj={}; for(var i=0;i<this.length;i++){ if(!obj[this[i]]){ arr_n.push(this[i]); obj[this[i]]=1; } } return arr_n; }; var b=[12,3,4,5,3,5,3,7,12]; b.unique2();
如果你也刚好入门 ,刚好对去重算法比较懵懂 ,希望对你有些许帮助!
原文:http://www.cnblogs.com/gongziqian/p/7531683.html
内容总结
以上是互联网集市为您收集整理的js数组去重算法全部内容,希望文章能够帮你解决js数组去重算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。