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 相关文章推荐
js常用代码段收集
Oct 28 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
基于jquery编写分页插件
Mar 07 Javascript
javascript对象的创建和访问
Mar 08 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
Vue-Cli中自定义过滤器的实现代码
Aug 12 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
Aug 24 Javascript
JS+HTML+CSS实现轮播效果
Nov 28 Javascript
Vue插件从封装到发布的完整步骤记录
Feb 28 Javascript
js实现带搜索功能的下拉框
Jan 11 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
Nov 16 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
晶体管单管来复再生式收音机
2021/03/02 无线电
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
phpwind放自动注册方法
2006/12/02 Javascript
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
Script的加载方法小结
2011/01/12 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
netbeans7安装python插件的方法图解
2013/12/24 Python
python框架django基础指南
2016/09/08 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
二手房购房协议书范本
2014/10/05 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
会计岗位职责范本
2015/04/02 职场文书
Python turtle编写简单的球类小游戏
2022/03/31 Python