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读取中文cookie时的乱码问题的解决方法
Oct 14 Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
Sep 10 Javascript
javascript实现下雪效果【实例代码】
May 03 Javascript
浅谈几种常用的JS类定义方法
Jun 08 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
Apr 21 jQuery
mongoose中利用populate处理嵌套的方法
May 26 Javascript
js操作二进制数据方法
Mar 03 Javascript
layui禁用侧边导航栏点击事件的解决方法
Sep 25 Javascript
vue随机验证码组件的封装实现
Feb 19 Javascript
es6函数之rest参数用法实例分析
Apr 18 Javascript
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 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 数学运算验证码实现代码
2009/10/11 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
php时间戳转换的示例
2014/03/31 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
Python数据类型之List列表实例详解
2019/05/08 Python
python 类之间的参数传递方式
2019/12/20 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
Python新手如何理解循环加载模块
2020/05/29 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
strstr()的简单实现
2013/09/26 面试题
.net笔试题
2014/03/03 面试题
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
过滤器的用法
2013/10/08 面试题
Java如何获得ResultSet的总行数
2016/09/03 面试题
区域销售经理职责
2013/12/22 职场文书
服装行业创业计划书范文
2014/02/05 职场文书
拉拉队口号
2014/06/16 职场文书
车间核算员岗位职责
2014/07/01 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
店铺转让协议书
2015/01/29 职场文书
大学生求职自荐信范文
2015/03/04 职场文书