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 相关文章推荐
JavaScript 放大镜 放大倍率和视窗尺寸
May 09 Javascript
javascript alert乱码的解决方法
Nov 05 Javascript
使用js判断TextBox控件值改变然后出发事件
Mar 07 Javascript
利用jQuery实现可以编辑的表格
May 26 Javascript
JavaScript toUpperCase()方法使用详解
Aug 26 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
Dec 12 Javascript
canvas 绘制圆形时钟
Feb 22 Javascript
浅谈react前后端同构渲染
Sep 20 Javascript
nginx配置React静态页面的方法教程
Nov 03 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 Javascript
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
javascript实现左右缓动动画函数
Nov 25 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
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
fgetcvs在linux的问题
2012/01/15 PHP
php获取字段名示例分享
2014/03/03 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python中tell()方法的使用详解
2015/05/24 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
Python编写一个优美的下载器
2018/04/15 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
C,C++的几个面试题小集
2013/07/13 面试题
局域网标准
2016/09/10 面试题
环保倡议书100字
2014/05/15 职场文书
红色影片观后感
2015/06/18 职场文书