js数组去重

作者 : 开心源码 本文共1271个字,预计阅读时间需要4分钟 发布时间: 2022-05-11 共74人阅读

在前台面试中,经常会被问到这样的一个问题;就是数组去重的问题,就是去掉重复内容

实现的方法有很多

下面我主要详情三种方法:

方法一:

是我们平时思路一般想到的;也是最其本的方法,就是两次for循坏,进行逐个比较

//最基本的方法,两次for循坏,进行逐个比较Array.prototype.unique1 = function () { //返回的结果数组;进来就取出第一个元素 var result = [this[0]]; for(var i = 1; i < this.length; i++){ var flag = true; for(var j = 0; j < result.length; j++){ if(this[i] == result[j]){flag = false; break;}} //假如两个数组内容不相等,就把其加到返回的数组中 if(flag){result.push(this[i]);}} return result;};var test = [23,'sd',23,2,45,45,23,'sd','打击',23];console.log(test.unique1());

方法二:

利使用indexOf()方法进行判断,一次for循坏就可以取出,比第一种方法效率高

//第二种方法,利使用indexOf()方法判断Array.prototype.unique2 =function () { //定义返回的临时数组 var result = []; for(var i = 0; i < this.length; i++){ if(result.indexOf(this[i]) == -1){ //遍历数组,假如返回的结果数组找不到,就把其加进去 result.push(this[i]);}} return result;};var test = [23,'sd',23,2,45,45,23,'sd','打击',23];console.log(test.unique2());

方法三:

利使用对象的特点进行判断取出,效率最佳

//第三种方法,利使用对象取职判断,与第二种方法思想类似(效率比较高)Array.prototype.unique3 = function () { //定义临时返回数组 var result = []; //定义临时存值对象 var obj = {}; for(var i = 0; i < this.length; i++){ //遍历数组,判断对象中能否存在相同的数组内容,以key值形式来判断 if(!obj[this[i]]){ //假如不存在,push到返回的数组中 result.push(this[i]); //同时把其当作key值的形式存入对象,其value值都为1 obj[this[i]] = 1;}} return result;};var test = [23,'sd',23,2,45,45,23,'sd','打击',23];console.log(test.unique3());
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » js数组去重

发表回复