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 相关文章推荐
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
Dec 22 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
Sep 08 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
jQuery遍历DOM元素与节点方法详解
Apr 14 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
Aug 23 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
Aug 07 Javascript
微信小程序网络封装(简单高效)
Aug 06 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 Javascript
JS实现简单的抽奖转盘效果示例
Feb 16 Javascript
jQuery 移除事件的方法
Jun 20 jQuery
js canvas实现俄罗斯方块
Oct 11 Javascript
JavaScript中条件语句的优化技巧总结
Dec 04 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
如何去掉文章里的 html 语法
2006/10/09 PHP
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
python模块restful使用方法实例
2013/12/10 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
python enumerate函数的使用方法总结
2017/11/15 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
详解python变量与数据类型
2020/08/25 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
物业管理公司实习生自我鉴定
2013/09/19 职场文书
房屋改造计划书
2014/01/10 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
学习型党组织心得体会
2014/09/12 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
员工家属慰问信
2015/03/24 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
保留意见审计报告
2015/06/05 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
Golang中channel的原理解读(推荐)
2021/10/16 Golang