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 相关文章推荐
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 Javascript
javaScript实现浮点数转十六进制字符
Oct 29 Javascript
js 3种归并操作的实例代码
Oct 30 Javascript
jQuery实现文本框输入同步的方法
Jun 20 Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
Nov 25 Javascript
轻松掌握JavaScript中的Math object数学对象
May 26 Javascript
JS简单生成两个数字之间随机数的方法
Aug 03 Javascript
原生js验证简洁注册登录页面
Dec 17 Javascript
js数组去重的方法总结
Jan 18 Javascript
webpack4 optimization使用总结
Nov 10 Javascript
解决Antd 里面的select 选择框联动触发的问题
Oct 24 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
简单易用的计数器(数据库)
2006/10/09 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
JavaScript高级程序设计 阅读笔记(二十) js错误处理
2012/08/14 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
Python使用MONGODB入门实例
2015/05/11 Python
Python中的hypot()方法使用简介
2015/05/18 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
python中的字典操作及字典函数
2018/01/03 Python
python调用webservice接口的实现
2019/07/12 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
最好的商品表达自己:Cafepress
2019/09/04 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
餐饮业会计岗位职责
2013/12/19 职场文书
真诚的求职信
2014/07/04 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL