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 相关文章推荐
Array.prototype 的泛型应用分析
Apr 30 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
May 24 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
只需一行代码,轻松实现一个在线编辑器
Nov 12 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
Oct 10 Javascript
9款2014最热门jQuery实用特效推荐
Dec 07 Javascript
在Google 地图上实现做的标记相连接
Jan 05 Javascript
Javascript编写俄罗斯方块思路及实例
Jul 07 Javascript
javascript实现网页背景烟花效果的方法
Aug 06 Javascript
JS类的定义与使用方法深入探索
Nov 26 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 Javascript
vue 实现setInterval 创建和销毁实例
Jul 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
php中smarty区域循环的方法
2015/06/11 PHP
广告显示判断
2006/08/31 Javascript
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
纯javascript版日历控件
2016/11/24 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
express框架下使用session的方法
2019/07/31 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
24式加速你的Python(小结)
2019/06/13 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
Python eval函数原理及用法解析
2020/11/14 Python
老海军美国官网:Old Navy
2016/09/05 全球购物
百丽国际旗下购物网站:优购
2017/02/28 全球购物
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
什么是lambda函数
2013/09/17 面试题
趣味比赛活动方案
2014/02/15 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
歌咏比赛主持词
2015/06/29 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js