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 相关文章推荐
Extjs 几个方法的讨论
Jan 28 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
Javascript中Array用法实例分析
Jun 13 Javascript
开启Javascript中apply、call、bind的用法之旅模式
Oct 28 Javascript
jquery.validate使用详解
Jun 02 Javascript
jquery通过name属性取值的简单实现方法
Jun 20 Javascript
jquery属性,遍历,HTML操作方法详解
Sep 17 Javascript
jQuery+CSS3实现点赞功能
Mar 13 Javascript
Node.js中流(stream)的使用方法示例
Jul 16 Javascript
Vue中建立全局引用或者全局命令的方法
Aug 21 Javascript
微信小程序 动画的简单实例
Oct 12 Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 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(8) php 数组
2010/03/05 PHP
php正则表达式使用的详细介绍
2013/04/27 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
JS实现self的resend
2010/07/22 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
vuejs指令详解
2017/02/07 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
python导入时小括号大作用
2017/01/10 Python
python与php实现分割文件代码
2017/03/06 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
django的登录注册系统的示例代码
2018/05/14 Python
用python生成1000个txt文件的方法
2018/10/25 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
国培远程培训感言
2014/03/08 职场文书
学校门卫岗位职责
2014/03/16 职场文书
企业法人授权委托书
2014/04/03 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android