js数组去重的hash方法


Posted in Javascript onDecember 22, 2016

对于 JavaScript 数组去除重复项,现在有多种方法,其中一种是hash,如下:

if (!Array.prototype.unique) {
 Array.prototype.unique = function () {
 var hash = {}, result = [], item;
 for (var i = 0; i < this.length; i++) {
 item = this[i];
 if ( !hash[item] ) {
 hash[item] = true;
 result.push(item);
 }
 }
 return result;
 };
}

但是该方法并不严谨,无法区分数字 1 和 字符串 '1'

var arr = [0, 1, '1', true, 5, true, false, undefined, undefined, null, null];
arr.unique();

js数组去重的hash方法

修改一下,加上数据类型判断:

if (!Array.prototype.unique) {
 Array.prototype.unique = function () {
 var hash = {}, result = [], type = '', item;
 for (var i = 0; i < this.length; i++) {
 item = this[i];
 type = Object.prototype.toString.call(item);

 if ( !hash[item + type] ) {
 hash[item + type] = true;
 result.push(item);
 }
 }
 return result;
 };
}

js数组去重的hash方法

至少现在对5种原始数据类型的值可以准确去重了,对某些引用类型的值──数组,函数,也可以,但是对象类型──{"name": 1}, {"name": 2}就没法区分了。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
理解JSON:3分钟课程
Oct 28 Javascript
动态创建script标签实现跨域资源访问的方法介绍
Feb 28 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 Javascript
JavaScript代码实现左右上下自动晃动自动移动
Apr 08 Javascript
JavaScript中的对象继承关系
Aug 01 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
Nov 09 Javascript
vue监听滚动事件实现滚动监听
Apr 11 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
ios设备中angularjs无法改变页面title的解决方法
Sep 13 Javascript
js实现随机数小游戏
Jun 28 Javascript
javascript实现滚轮轮播图片
Dec 13 Javascript
JavaScript生成.xls文件的代码
Dec 22 #Javascript
微信小程序 表单Form实例详解(附源码)
Dec 22 #Javascript
微信小程序 122100版本更新问题解决方案
Dec 22 #Javascript
JS闭包与延迟求值用法示例
Dec 22 #Javascript
jQuery实现两个select控件的互移操作
Dec 22 #Javascript
JS 调用微信扫一扫功能
Dec 22 #Javascript
Vue实现双向绑定的方法
Dec 22 #Javascript
You might like
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
angular2使用简单介绍
2016/03/01 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
Python给图像添加噪声具体操作
2019/03/03 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
python中os包的用法
2020/06/01 Python
python里glob模块知识点总结
2021/01/05 Python
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
好的演讲稿开场白
2013/12/30 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
工作调动申请报告
2015/05/18 职场文书
感恩教育主题班会
2015/08/12 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python