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 相关文章推荐
createElement与createDocumentFragment的点点区别小结
Dec 19 Javascript
关于 文本框默认值 的操作js代码
Jan 12 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
JQuery实现样式设置、追加、移除与切换的方法
Jun 11 Javascript
JavaScript中的Math.E属性使用详解
Jun 12 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
Apr 12 Javascript
javascript原型链学习记录之继承实现方式分析
May 01 Javascript
Node.js 路由的实现方法
Jun 05 Javascript
vue项目中播放rtmp视频文件流的方法
Sep 17 Javascript
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
关于React Native 无法链接模拟器的问题
Jun 21 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在线代理转向代码
2012/05/05 PHP
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
python 实现多维数组转向量
2019/11/30 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
党员年终民主评议的自我评价
2013/11/05 职场文书
白酒市场开发计划书
2014/01/09 职场文书
中考标语大全
2014/06/05 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
管理失职检讨书
2015/05/05 职场文书
付款证明模板
2015/06/19 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书