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 相关文章推荐
广泛收集的jQuery拖放插件集合
Apr 09 Javascript
JavaScript中的eval()函数使用介绍
Dec 31 Javascript
js和jquery实现监听键盘事件示例代码
Jun 24 Javascript
全面介绍javascript实用技巧及单竖杠
Jul 18 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
vue-cli如何快速构建vue项目
Apr 26 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
Aug 28 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
May 08 Javascript
Vue项目安装插件并保存
Jan 28 Javascript
JavaScript Math对象和调试程序的方法分析
May 13 Javascript
layui 实现自动选择radio单选框(checked)的方法
Sep 03 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下对字符串的递增运算代码
2010/08/21 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
JavaScript window.location对象
2014/11/14 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
通过python爬虫赚钱的方法
2019/01/29 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
上班打牌检讨书
2014/02/07 职场文书
《木笛》教学反思
2014/03/01 职场文书
地球一小时宣传标语
2014/06/24 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
项目转让协议书
2014/10/27 职场文书
2014年保洁员工作总结
2014/11/19 职场文书