Javascript 去除数组的重复元素


Posted in Javascript onMay 04, 2010

我打开firebug的console,花了30秒想,30秒写,结果如下:(x为目标数组,y是去除重复元素后的结果)

var x=[1,1,3,4,5,3]; 
var y=[]; 
var tArray=function(i,arr){ 
var yap=false; 
for(var j=0;j<arr.length;j++){ 
if(arr[j]==i){yap=true;break;}; 
} 
if(!yap) arr.push(i); 
}; 
for(var t=0;t<x.length;t++){ 
tArray(x[t],y); 
} 
alert(y.length); 
alert(y.toString());

答案不是唯一的,而且没有标准答案,所以上面的代码是对的也是错的。如果数组是一个复杂对象数组呢?如果数组中包含多个空对象{}呢?要知道js里面有很多特殊甚至是bug的现象,alert({}=={})看看怎么回事...

注:如果谁有标准答案欢迎评论里面发下让大家学习学习。

出题者本身就不会考虑到这些问题。

不要去学习做题,在实际工作中遇到问题时高效解决问题的能力才是真正有价值的。

需要注意的地方补充:

有个问题应该注意下
arr[j]==i 您这里貌似 是指当数组元素 为number类型时的相等性判断...
但是往往我们可能要对不同类型做 相等性判断... 这个是实际应用时应该考虑的问题

1!=new Number(1)的情况
null==undefined 的情况

0=="0" 的情况 等等

所以 显然 简单的== 和===都是不合适的.
应该独立实现一个 equals 方法 做相等性判断... 要根据需求 设置规则

我举的例子正是针对number类型的数组的,目的是对“面试啥做题”表达一种态度。实际应用中应该根据实际需求去考虑。除非实际工作中要求或者我是个js学术研究者,否则我是不会独立去实现一个equals方法的。国外的开发员往往遵循一个信条:“Do The Simplest Thing That Could Possibly Work”,意思大概即“不要过度设计,适用至上”,我这几年的工作经验也常常印证着这个道理。不知道你怎么看。

Javascript 相关文章推荐
showModelessDialog()使用详解
Sep 21 Javascript
jquery等待效果示例
May 01 Javascript
jQuery 复合选择器应用的几个例子
Sep 11 Javascript
JavaScript操作Cookie方法实例分析
May 27 Javascript
认识Knockout及如何使用Knockout绑定上下文
Dec 25 Javascript
JS定义类的六种方式详解
May 12 Javascript
老生常谈的跨域处理
Jan 11 Javascript
BootStrap fileinput.js文件上传组件实例代码
Feb 20 Javascript
Javascript中从学习bind到实现bind的过程
Jan 05 Javascript
用react-redux实现react组件之间数据共享的方法
Jun 08 Javascript
详解angular脏检查原理及伪代码实现
Jun 08 Javascript
详解Vue3使用axios的配置教程
Apr 29 Vue.js
JavaScript中SQL语句的应用实现
May 04 #Javascript
javascript 文章截取部分无损html显示实现代码
May 04 #Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
May 04 #Javascript
div+css布局的图片连续滚动js实现代码
May 04 #Javascript
javascript面向对象之Javascript 继承
May 04 #Javascript
Javascript 面向对象之重载
May 04 #Javascript
JavaScript 面向对象的之私有成员和公开成员
May 04 #Javascript
You might like
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
php实现的简单检验登陆类
2015/06/18 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
深入理解Python中装饰器的用法
2016/06/28 Python
如何将python中的List转化成dictionary
2016/08/15 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
如何编写python的daemon程序
2021/01/07 Python
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
Aosom西班牙:家具在线商店
2020/06/11 全球购物
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
小学教师求职信范文
2015/03/20 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
比赛主持人开场白
2015/05/29 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python