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 相关文章推荐
SWFObject 2.1以上版本语法介绍
Jul 10 Javascript
Extjs4中的分页应用结合前后台
Dec 13 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
Jan 06 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
js实现固定宽高滑动轮播图效果
Jan 13 Javascript
解决给dom元素绑定click等事件无效问题的方法
Feb 17 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
Aug 18 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
小程序获取周围IBeacon设备的方法
Oct 31 Javascript
说说Vue.js中的functional函数化组件的使用
Feb 12 Javascript
js实现的格式化数字和金额功能简单示例
Jul 30 Javascript
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
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
2014/11/19 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python中的super用法详解
2015/05/28 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
Django日志模块logging的配置详解
2017/02/14 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
中专生自荐信
2013/10/12 职场文书
艺术系应届生的自我评价
2013/10/19 职场文书
教育实习生的自我评价分享
2013/11/21 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
优秀幼教自荐信
2014/02/03 职场文书
护士进修自我鉴定
2014/02/07 职场文书
购房协议书范本
2014/10/02 职场文书
史上最牛的辞职信
2015/02/28 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书