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 相关文章推荐
缓动函数requestAnimationFrame 更好的实现浏览器经动画
Dec 07 Javascript
代码触发js事件(click、change)示例应用
Dec 13 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
Feb 13 Javascript
详解Javascript动态操作CSS
Dec 08 Javascript
js实现图片漂浮效果的方法
Mar 02 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
AngularJS ng-template寄宿方式用法分析
Nov 07 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
Jul 27 Javascript
VueRouter导航守卫用法详解
Dec 25 Javascript
详解angular路由高亮之RouterLinkActive
Apr 28 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
JavaScript判断数组类型的方法
Oct 23 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
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
Python单例模式的两种实现方法
2017/08/14 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
python f-string式格式化听语音流程讲解
2019/06/18 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
会计毕业生自荐信
2013/11/21 职场文书
校运会入场式解说词
2014/02/10 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
怎样写好工作计划
2019/04/10 职场文书
如何做好工作总结!
2019/04/10 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript