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 textarea光标定位方法(兼容IE和FF)
Mar 12 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
Jan 15 Javascript
关于javascript event flow 的一个bug详解
Sep 17 Javascript
JavaScript改变CSS样式的方法汇总
May 07 Javascript
谈谈对offsetleft兼容性的理解
Nov 11 Javascript
6种javascript显示当前系统时间代码
Dec 01 Javascript
JavaScript实现二分查找实例代码
Feb 22 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
基于vue实现swipe分页组件实例
May 25 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
Sep 26 Javascript
Angular2.0实现modal对话框的方法示例
Feb 18 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 jQuery
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
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
PHP生成带有雪花背景的验证码
2008/09/28 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
php获取随机数组列表的方法
2014/11/13 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
Python入门之modf()方法的使用
2015/05/15 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
python实现excel读写数据
2021/03/02 Python
python 获取图片分辨率的方法
2019/01/08 Python
Python魔法方法详解
2019/02/13 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
汽车装潢店创业计划书范文
2014/02/05 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
预备党员转正材料
2014/12/19 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
Python预测分词的实现
2021/06/18 Python