javascript 数组去重 unique
晚上无事,偶然看到这么个小测试,拿来写一写,希望大家提建议;
直接上代码:
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相关推荐
- 六种方法实现JavaScript数组去重
tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( 'ω' )و [本文源址:http://blog.csdn.net/q1056843325/article/details/73277063 ...
- JavaScript数组去重—ES6的两种方式
说明 JavaScript数组去重这个问题,经常出现在面试题中,以前也写过一篇数组去重的文章,(JavaScript 数组去重的多种方法原理详解)但感觉代码还是有点不够简单,今天和大家再说两种方法,代 ...
- JavaScript数组去重算法实例
本文主要介绍了JavaScript数组去重算法,结合实例形式总结分析了JavaScript数组去重相关的读写.遍历.比较.排序等操作及算法改进相关实现技巧,需要的朋友可以参考下 测试用例: arr = ...
- JavaScript 数组去重方法合集(简洁易懂)
JavaScript数组去重 JavaScript去重的七种方法 简单易懂 方法一:暴力去重法 // 暴力去重法 function ArrayIsUnique (array) {if (!Array. ...
- JavaScript数组去重的五种方法
JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...
- java数组去重_再谈JavaScript数组去重
JavaScript的数组去重是一个老生常谈的话题了.随便搜一搜就能找到非常多不同版本的解法. 细想一下,这样一个看似简单的需求,如果要做到完备,涉及的知识和需要注意的地方着实不少. 定义重复(相等) ...
- javascript数组 去重
数组去重的方法有很多,到底哪种是最理想的,自己不清楚.于是自己测试了下数组去重的效果和性能.测试十万个数据,代码和所耗大概时间如下. 到底采用哪种方法,根据实际情况而定吧. /*方法一: 1,'1' ...
- javascript数组去重方法汇总
前言 数组去重已经是一个老生常谈的问题了,依然经久不息,经过岁月的变迁es标准的升级迭代,似乎有越来越多的方法和方式供我们使用,那么那种方式才是最优的?那种才是最简洁的?这个我们一起来探讨. 省略:传 ...
- 史上最全JavaScript数组去重的十种方法(推荐)
一.前言: 我们在实际工作中,或者在面试找工作时,都会用到或者被问到一个问题,那就是"数组如何去重".是的,这个问题有很多种解决方案,看看下面的十种方式吧! 二.数组去重方式大汇总 ...
- javascript数组去重的10种方法
亲爱的小伙伴,对于数组javascript中的数组去重方法你知道多少种呢?学会如何对数组进行去重对于javascript的学习来说也是十分重要的,下边就让我来分享一下我所知道的集中数组去重的方法吧! ...
最新文章
- 通用权限管理组件使用说明书V3.0 错误校正 感谢自由软件职业者Helper(767870484)...
- 【今日互联网大事儿】网易陌陌开火,孰是孰非我们慢慢看
- 第三章计算机试题,计算机等级考试二级VB测试题(第三章)
- MySql修改数据库编码为UTF8
- 升级glibc库到glibc-2.14.1
- 基于 Spring Boot + Vue.js + MySQL 的 QQ 登陆实战
- 十大管理之项目质量管理知识点
- 弘辽科技:淘宝改SKU图片会影响权重吗?
- android MIT App Inventor 2 Beta 中文资料
- 专治不明觉厉:深度解密IBM黑科技量子计算机
- Flask 中 AssertionError: View function mapping is overwriting an existing endpoint function: decorate
- 币骏言:6.14币圈交易市场成功的人有哪些心态和技巧?
- 5V的OVP过压保护IC,去掉不良率
- 计算机三级上机题库百度云,全国计算机三级数据库等级考试全套(笔试背诵资料+笔试试题+详细答案+最新数据库技术上机试题题库).doc...
- 【openEuler】x2openEuler工具使用
- ats2851 / cm591 ugreen bluetooth 5.3 for Linux
- weblogic动态调试环境搭建
- 忽略了导热硅脂等于祸害电脑
- Modbus 协议基础
- 基于STM32的HX711模块的电子秤设计