JavaScript基于对象去除数组重复项的方法


Posted in Javascript onOctober 09, 2016

本文实例讲述了JavaScript基于对象去除数组重复项的方法。分享给大家供大家参考,具体如下:

JavaScript中,去除数组重复项是一个很常用的函数,而且在面试中也很经常被提问到.很多人在面对这个问题的时候,一般都是采用多层for循环来一步一步的比较,然后删除,那样不仅代码量很多,而且性能也很不好.在JavaScript的对象中,有一个特性就是key永远不重复,如果重复后面的就会覆盖前面的.

三个步骤:

1# 把数组转换成js对象
2# 把数组值变成js对象中的key
3# 把对象还原成数组

var toObject = function(arr){
    var obj = new Object(); //私有对象
    var j = arr.length;
    for(var i=0; i < j; +i+){
        obj[arr[i]] = true;
    }
    return obj;
}
var keys = function(obj){
    var arr = [];
    for(var attr in obj){
        if(obj.hasOwnPerpoty(attr)){
            arr.push(attr);
        }
    }
    return arr;
}
var uniq = function(arr){ //去除重复项
    return keys(toObject(newarr));
}

在使用的使用,把数组传递到uniq函数里面即可,这个方法使用了JavaScript对象特性,非常的高效简洁,也是雅虎YUI的底层实现.

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
新页面打开实际尺寸的图片
Aug 25 Javascript
javascript 清除输入框中的数据
Apr 13 Javascript
xml文档转换工具,附图表例子(hta)
Nov 17 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
Jul 13 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
Oct 09 Javascript
JavaScript 七大技巧(一)
Dec 13 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
Feb 17 Javascript
关于JS中的apply,call,bind的深入解析
Apr 05 Javascript
Vue2.0 vue-source jsonp 跨域请求
Aug 04 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
Nov 28 Javascript
bootstrap Table实现合并相同行
Jul 19 Javascript
NProgress显示顶部进度条效果及使用详解
Sep 21 Javascript
JS中this上下文对象使用方式
Oct 09 #Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 #Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
Oct 09 #Javascript
BootStrap中Table分页插件使用详解
Oct 09 #Javascript
微信小程序 for 循环详解
Oct 09 #Javascript
微信小程序 条件渲染详解
Oct 09 #Javascript
手机浏览器 后退按钮强制刷新页面方法总结
Oct 09 #Javascript
You might like
php 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
类之Prototype.js学习
2007/06/13 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
Python按钮的响应事件详解
2019/03/04 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
Django models filter筛选条件详解
2020/03/16 Python
python代码实现猜拳小游戏
2020/11/30 Python
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
委托协议书范本
2014/04/22 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
让子弹飞观后感
2015/06/11 职场文书
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫