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 相关文章推荐
JavaScript基本对象
Jan 11 Javascript
犀利的js 函数集合
Jun 11 Javascript
一些相见恨晚的 JavaScript 技巧
Apr 25 Javascript
location.href用法总结(最主要的)
Dec 27 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
JavaScript设计模式初探
Jan 07 Javascript
JavaScript实现相册弹窗功能(zepto.js)
Jun 21 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
Sep 30 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
May 02 Javascript
vue2配置scss的方法步骤
Jun 06 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
Sep 10 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 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 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
鼠标图片振动代码
2006/07/06 Javascript
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
python编写爬虫小程序
2015/05/14 Python
python关键字and和or用法实例
2015/05/28 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
python 带时区的日期格式化操作
2020/10/23 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
优秀电子工程系毕业生求职信
2014/05/24 职场文书
陪护人员误工证明
2015/06/24 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers