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 相关文章推荐
通过 Dom 方法提高 innerHTML 性能
Mar 26 Javascript
JQuery Study Notes 学习笔记(一)
Aug 04 Javascript
js判断主流浏览器类型和版本号的简单实现代码
May 26 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
Sep 19 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
Feb 04 Javascript
基于JavaScript实现本地图片预览
Feb 08 Javascript
jQuery阻止移动端遮罩层后页面滚动
Mar 15 Javascript
详解js中let与var声明变量的区别
Apr 05 Javascript
axios异步提交表单数据的几种方法
Aug 11 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
Aug 17 Javascript
three.js如何实现3D动态文字效果
Mar 03 Javascript
【js设计模式】SOLID五大设计原则
Mar 24 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
第七节 类的静态成员 [7]
2006/10/09 PHP
MySQL相关说明
2007/01/15 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
php之CodeIgniter学习笔记
2013/06/17 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
php成功操作redis cluster集群的实例教程
2019/01/13 PHP
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
打开电脑上的QQ的python代码
2013/02/10 Python
python检测远程端口是否打开的方法
2015/03/14 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
TensorFlow的权值更新方法
2018/06/14 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
Python项目打包成二进制的方法
2020/12/30 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
软件测试面试题
2015/10/21 面试题
本科毕业生自我鉴定
2013/11/02 职场文书
护理专业应届毕业生推荐信
2013/11/15 职场文书
护士实习求职信
2014/06/22 职场文书
应届大学生求职信
2014/07/20 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
党内外群众意见范文
2015/06/02 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
教你用Python matplotlib库制作简单的动画
2021/06/11 Python