UDN-企业互联网技术人气社区

板块导航

浏览  : 745
回复  : 2

[原生js] js数组去重的hash方法

[复制链接]
刘莉莉11的头像 楼主
发表于 2017-1-3 13:06:38 | 显示全部楼层 |阅读模式
  对于JavaScript数组去除重复项,现在有多种方法,其中一种是hash,本文主要对hash方法去除js数组重复项进行介绍,下面就跟小编一起来看下吧

  对于 JavaScript 数组去除重复项,现在有多种方法,其中一种是hash,如下:
  1. if (!Array.prototype.unique) {
  2. Array.prototype.unique = function () {
  3.   var hash = {}, result = [], item;
  4.   for (var i = 0; i < this.length; i++) {
  5.    item = this[i];
  6.    if ( !hash[item] ) {
  7.     hash[item] = true;
  8.     result.push(item);
  9.    }
  10.   }
  11.   return result;
  12. };
  13. }
复制代码

  但是该方法并不严谨,无法区分数字 1 和 字符串 '1'
  1. var arr = [0, 1, '1', true, 5, true, false, undefined, undefined, null, null];
  2. arr.unique();
复制代码

201612221035222.png

  修改一下,加上数据类型判断:
  1. if (!Array.prototype.unique) {
  2. Array.prototype.unique = function () {
  3.   var hash = {}, result = [], type = '', item;
  4.   for (var i = 0; i < this.length; i++) {
  5.    item = this[i];
  6.    type = Object.prototype.toString.call(item);

  7.    if ( !hash[item + type] ) {
  8.     hash[item + type] = true;
  9.     result.push(item);
  10.    }
  11.   }
  12.   return result;
  13. };
  14. }
复制代码

201612221035223.png

  至少现在对5种原始数据类型的值可以准确去重了,对某些引用类型的值──数组,函数,也可以,但是对象类型──{"name": 1}, {"name": 2}就没法区分了。
  
  以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
  
  原文链接:http://www.cnblogs.com/caihg/p/5261997.html
发表于 2017-1-3 13:07:09 来自手机 | 显示全部楼层
经常看到”刘莉莉11“发帖,辛苦了
使用道具 举报

回复

发表于 2017-1-4 06:03:01 | 显示全部楼层
LZ是闲人,天天发帖,坚定完毕
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部