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中Array 对象相关的几个方法
Dec 22 Javascript
js宝典学习笔记(上)
Jan 10 Javascript
如何在Web页面上直接打开、编辑、创建Office文档
Mar 12 Javascript
JavaScript DOM学习第八章 表单错误提示
Feb 19 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
May 12 Javascript
JavaScript基础语法让人疑惑的地方小结
May 23 Javascript
JavaScript与jQuery实现的闪烁输入效果
Feb 18 Javascript
jQuery读取XML文件的方法示例
Feb 03 Javascript
原生JS上传大文件显示进度条 php上传文件代码
Mar 27 Javascript
微信小程序基于picker实现级联菜单
Feb 15 Javascript
小程序实现可拖动的悬浮按钮
Sep 07 Javascript
解决vue2中使用elementUi打包报错的问题
Sep 22 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
PHP中file_get_contents高?用法实例
2014/09/24 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
PHP中“=&gt;
2019/03/01 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
python实现汉诺塔递归算法经典案例
2021/03/01 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
python计算两个数的百分比方法
2018/06/29 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
python批量修改xml属性的实现方式
2020/03/05 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
戴森英国官网:Dyson英国
2019/05/07 全球购物
员工年终演讲稿
2014/01/03 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
创文明城市标语
2014/06/16 职场文书
辞职离别感言
2015/08/04 职场文书
2016小学新学期寄语
2015/12/04 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers