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 提升运行速度之循环篇 译文
Aug 15 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
Feb 24 Javascript
jQuery多级手风琴菜单实例讲解
Oct 22 Javascript
JavaScript中获取HTML元素值的三种方法
Jun 20 Javascript
JavaScript中apply方法的应用技巧小结
Sep 29 Javascript
基于Vue中点击组件外关闭组件的实现方法
Mar 06 Javascript
详解auto-vue-file:一个自动创建vue组件的包
Apr 26 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
Sep 24 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
Apr 01 Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
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创建动态图像
2006/10/09 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
jquery中this的使用说明
2010/09/06 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
js Date概念详细介绍
2013/11/22 Javascript
jquery map方法使用示例
2014/04/23 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
python开发中module模块用法实例分析
2015/11/12 Python
python中关于for循环的碎碎念
2017/06/30 Python
详解django三种文件下载方式
2018/04/06 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
python3转换code128条形码的方法
2019/04/17 Python
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
爱国口号
2014/06/19 职场文书
求职自我评价范文100字
2014/09/23 职场文书
信息技术国培研修日志
2015/11/13 职场文书
大学生党课心得体会
2016/01/07 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
Go语言编译原理之变量捕获
2022/08/05 Golang
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技