js数组去重的hash方法

 更新时间:2016年12月22日 10:38:03   作者:caihg  
对于JavaScript数组去除重复项,现在有多种方法,其中一种是hash,本文主要对hash方法去除js数组重复项进行介绍,下面就跟小编一起来看下吧

对于 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();

修改一下,加上数据类型判断:

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;
 };
}

至少现在对5种原始数据类型的值可以准确去重了,对某些引用类型的值──数组,函数,也可以,但是对象类型──{"name": 1}, {"name": 2}就没法区分了。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • JS基于正则表达式的替换操作(replace)用法示例

    JS基于正则表达式的替换操作(replace)用法示例

    这篇文章主要介绍了JS基于正则表达式的替换操作(replace)用法,结合具体实例形式详细分析了replace函数的语法、参数及具体使用技巧,需要的朋友可以参考下
    2017-04-04
  • layer弹出层框架alert与msg详解

    layer弹出层框架alert与msg详解

    本文主要介绍了layer弹出层框架alert与msg的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • JavaScript事件循环剖析宏任务与微任务

    JavaScript事件循环剖析宏任务与微任务

    这篇文章主要为大家介绍了JavaScript事件循环剖析宏任务与微任务示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • webpack自动化打包webpack-dev-server的实现

    webpack自动化打包webpack-dev-server的实现

    我们每次改完要打包的资源文件,和配置文件都是是输入npx webpack命令手动打包的,本文就来介绍一下webpack自动化打包webpack-dev-server的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-07-07
  • Bootstrap警告(Alerts)的实现方法

    Bootstrap警告(Alerts)的实现方法

    这篇文章主要为大家详细介绍了Bootstrap警告(Alerts)的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • js动态切换图片的方法

    js动态切换图片的方法

    这篇文章主要介绍了js动态切换图片的方法,包含完整的css文件与js文件实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-01-01
  • 浅析Javascript使用include/require

    浅析Javascript使用include/require

    它有一个要求就是你的前端js是作为模块式的开发, 在前端逻辑比较复杂的话, 使用模块式来进行前端开发应该是种不错的选择。这里只简单介绍一下
    2013-11-11
  • JS实现的鼠标跟随代码(卡通手型点击效果)

    JS实现的鼠标跟随代码(卡通手型点击效果)

    这篇文章主要介绍了JS实现的鼠标跟随代码,带有卡通手型点击效果.涉及JavaScript鼠标事件的响应与页面元素的动态调用技巧,需要的朋友可以参考下
    2015-10-10
  • Javascript验证上传图片大小[前台处理]

    Javascript验证上传图片大小[前台处理]

    在做上传图片的时候,如果不限制上传图片大小,后果非常的严重。解决这个问题有两种方式:后台处理、前台处理
    2014-07-07
  • 自定义百度分享的分享按钮

    自定义百度分享的分享按钮

    这篇文章主要介绍了自定义百度分享的分享按钮的相关资料,需要的朋友可以参考下
    2015-03-03

最新评论