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 相关文章推荐
得到文本框选中的文字,动态插入文字的js代码
Mar 07 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
javascript中callee与caller的区别分析
Apr 20 Javascript
H5上传本地图片并预览功能
May 08 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 Javascript
Vue不能观察到数组length的变化
Jun 08 Javascript
Vue.js实现的计算器功能完整示例
Jul 11 Javascript
vue js秒转天数小时分钟秒的实例代码
Aug 08 Javascript
vue开发移动端底部导航条功能
Apr 08 Javascript
解决vant中 tab栏遇到的坑 van-tabs
Nov 04 Javascript
JavaScript 防盗链的原理以及破解方法
Dec 29 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
php操作SVN版本服务器类代码
2011/11/27 PHP
php商品对比功能代码分享
2015/09/24 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
js选项卡的实现方法
2015/02/09 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
vue使用nprogress加载路由进度条的方法
2020/06/04 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
美术兴趣小组活动总结
2014/07/07 职场文书
大学生求职自荐信
2015/03/24 职场文书
开除员工通知
2015/04/22 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android
Oracle中日期的使用方法实例
2022/07/07 Oracle