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 相关文章推荐
js Flash插入函数免激活代码
Mar 31 Javascript
Document 对象的常用方法
Jul 31 Javascript
JS getStyle获取最终样式函数代码
Apr 01 Javascript
用js的for循环获取radio选中的值
Oct 21 Javascript
js 事件截取enter按键页面提交事件示例代码
Mar 04 Javascript
使用原生JS实现弹出层特效
Dec 22 Javascript
js实现select下拉框菜单
Dec 08 Javascript
Angular.js中$apply()和$digest()的深入理解
Oct 13 Javascript
微信小程序如何获取用户手机号
Jan 26 Javascript
JavaScript中call和apply方法的区别实例分析
Aug 03 Javascript
Vue关于组件化开发知识点详解
May 13 Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 19 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
PHP6 先修班 JSON实例代码
2008/08/23 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
python在非root权限下的安装方法
2018/01/23 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
Django密码系统实现过程详解
2019/07/19 Python
python cumsum函数的具体使用
2019/07/29 Python
如何使用repr调试python程序
2020/02/28 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
军校本科大学生自我评价
2014/01/14 职场文书
工程采购员岗位职责
2014/03/09 职场文书
专题组织生活会方案
2014/06/15 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
Python必备技巧之函数的使用详解
2022/04/04 Python