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文件 document.createElement
Oct 14 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
Jan 02 Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 Javascript
JavaScript中的console.profile()函数详细介绍
Dec 29 Javascript
不能不知道的10个angularjs英文学习网站
Mar 23 Javascript
JavaScript中的Number数字类型学习笔记
May 26 Javascript
Bootstrap实现input控件失去焦点时验证
Aug 04 Javascript
jQuery与JavaScript节点创建方法的对比
Nov 18 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
在vscode中统一vue编码风格的方法
Feb 22 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
Sep 25 Javascript
Node.js中文件系统fs模块的使用及常用接口
Mar 06 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访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
express express-session的使用小结
2018/12/12 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
php使用递归与迭代实现快速排序示例
2014/01/23 Python
python原始套接字编程示例分享
2014/02/21 Python
python实现的希尔排序算法实例
2015/07/01 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
为什么需要版本控制
2016/10/28 面试题
大学生入党自我鉴定
2013/10/31 职场文书
材料采购员岗位职责
2013/12/17 职场文书
代理班主任的自我评价
2014/02/04 职场文书
中学生操行评语
2014/04/24 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
2014高考励志标语
2014/06/05 职场文书
争先创优心得体会
2014/09/12 职场文书
公务员考察材料
2014/12/23 职场文书
项目验收申请报告
2015/05/15 职场文书
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python