晚上无事,偶然看到这么个小测试,拿来写一写,希望大家提建议;

直接上代码:

 1 Array.prototype.unique = function (isStrict) {
 2     if (this.length < 2)
 3         return [this[0]] || [];
 4     var tempObj = {}, newArr = [];
 5     for (var i = 0; i < this.length; i++) {
 6         var v = this[i];
 7         var condition = isStrict ? (typeof tempObj[v] != typeof v) : false;
 8         if ((typeof tempObj[v] == "undefined") || condition) {
 9             tempObj[v] = v;
10             newArr.push(v);
11         }
12     }
13     return newArr;
14 }

验证:var arr = ["9", 9, 1, 3, 8, 7, 7, 6, 6, 5, 7, 8, 8, 7, 4, 3, 1, 22, 22, 'a', 'a','bcd', 'abc', 'bcd'];var newArr = arr.unique(true);alert(newArr.join(","));//严格模式:9,9,1,3,8,7,6,5,4,22,a,bcd,abc,将其中"9",9认为不同

var newArr = arr.unique();alert(newArr.join(","));//普通模式:9,1,3,8,7,6,5,4,22,a,bcd,abc,将其中"9",9认为相同

注意:

1、使用临时对象tempObj,将数组的值作为对象的键值,遍历数组时对当前值根据对象键值判断,不存在就将这个数组的值push到新数组中。提高效率

2、使用类型判断,如果当前数组值做为对象键,所对应的对象值类型与当前值类型一致,则可以根据参数(isStirct严格模式)决定是否去重,true表示严格,对于字符为22,或数字为22都认为一样,否则保留

看了一下JavaScript高级程序设计中关于数组的操作,又想到种更简单的去重方法,代码如下:

 1 Array.prototype.unique = function () {
 2     var newArr = [];
 3     for (var i = 0; i < this.length; i++) {
 4         if (newArr.indexOf(this[i]) == -1) {
 5             newArr.push(this[i]);
 6         }
 7     }
 8     return newArr;
 9 }
10 var arr = ['a','b',1,4,5,8,4,3,1,'a','1'];
11 alert(arr.unique());//a,b,1,4,5,8,3,1  indexOf默认调用===,因此将1与'1'认为是不同

转载于:https://www.cnblogs.com/gaojun/p/3579459.html

javascript 数组去重 unique相关推荐

  1. 六种方法实现JavaScript数组去重

    tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( 'ω' )و [本文源址:http://blog.csdn.net/q1056843325/article/details/73277063 ...

  2. JavaScript数组去重—ES6的两种方式

    说明 JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript 数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种方法,代 ...

  3. JavaScript数组去重算法实例

    本文主要介绍了JavaScript数组去重算法,结合实例形式总结分析了JavaScript数组去重相关的读写.遍历.比较.排序等操作及算法改进相关实现技巧,需要的朋友可以参考下 测试用例: arr = ...

  4. JavaScript 数组去重方法合集(简洁易懂)

    JavaScript数组去重 JavaScript去重的七种方法 简单易懂 方法一:暴力去重法 // 暴力去重法 function ArrayIsUnique (array) {if (!Array. ...

  5. JavaScript数组去重的五种方法

    JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...

  6. java数组去重_再谈JavaScript数组去重

    JavaScript的数组去重是一个老生常谈的话题了.随便搜一搜就能找到非常多不同版本的解法. 细想一下,这样一个看似简单的需求,如果要做到完备,涉及的知识和需要注意的地方着实不少. 定义重复(相等) ...

  7. javascript数组 去重

    数组去重的方法有很多,到底哪种是最理想的,自己不清楚.于是自己测试了下数组去重的效果和性能.测试十万个数据,代码和所耗大概时间如下. 到底采用哪种方法,根据实际情况而定吧. /*方法一: 1,'1' ...

  8. javascript数组去重方法汇总

    前言 数组去重已经是一个老生常谈的问题了,依然经久不息,经过岁月的变迁es标准的升级迭代,似乎有越来越多的方法和方式供我们使用,那么那种方式才是最优的?那种才是最简洁的?这个我们一起来探讨. 省略:传 ...

  9. 史上最全JavaScript数组去重的十种方法(推荐)

    一.前言: 我们在实际工作中,或者在面试找工作时,都会用到或者被问到一个问题,那就是"数组如何去重".是的,这个问题有很多种解决方案,看看下面的十种方式吧! 二.数组去重方式大汇总 ...

  10. javascript数组去重的10种方法

    亲爱的小伙伴,对于数组javascript中的数组去重方法你知道多少种呢?学会如何对数组进行去重对于javascript的学习来说也是十分重要的,下边就让我来分享一下我所知道的集中数组去重的方法吧! ...

最新文章

  1. 通用权限管理组件使用说明书V3.0 错误校正 感谢自由软件职业者Helper(767870484)...
  2. 【今日互联网大事儿】网易陌陌开火,孰是孰非我们慢慢看
  3. 第三章计算机试题,计算机等级考试二级VB测试题(第三章)
  4. MySql修改数据库编码为UTF8
  5. 升级glibc库到glibc-2.14.1
  6. 基于 Spring Boot + Vue.js + MySQL 的 QQ 登陆实战
  7. 十大管理之项目质量管理知识点
  8. 弘辽科技:淘宝改SKU图片会影响权重吗?
  9. android MIT App Inventor 2 Beta 中文资料
  10. 专治不明觉厉:深度解密IBM黑科技量子计算机
  11. Flask 中 AssertionError: View function mapping is overwriting an existing endpoint function: decorate
  12. 币骏言:6.14币圈交易市场成功的人有哪些心态和技巧?
  13. 5V的OVP过压保护IC,去掉不良率
  14. 计算机三级上机题库百度云,全国计算机三级数据库等级考试全套(笔试背诵资料+笔试试题+详细答案+最新数据库技术上机试题题库).doc...
  15. 【openEuler】x2openEuler工具使用
  16. ats2851 / cm591 ugreen bluetooth 5.3 for Linux
  17. weblogic动态调试环境搭建
  18. 忽略了导热硅脂等于祸害电脑
  19. Modbus 协议基础
  20. 基于STM32的HX711模块的电子秤设计

热门文章

  1. DaisyDisk for Mac磁盘清理
  2. 小白如何购买阿里云服务器(2019最详细教程)
  3. 攻击银行内网,黑客只要三步
  4. 关于消息中间件,我找了一些比较好玩的讨论主题,觉得对于深入理解一些技术问题非常有帮助...
  5. 转行程序员深漂的这三年 #2
  6. Micro-mvc与springcloud整合
  7. Unity3d脚本生命周期
  8. c语言自行设计矩形类构造函数
  9. Volume Shadow Copy Service(VSS)如何工作
  10. 最适合晚上睡不着看的 8 个网站,建议收藏哦