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 禁止复制网页
Jun 11 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
Jan 25 Javascript
javascript中的onkeyup和onkeydown区别介绍
Apr 28 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
Oct 17 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
Nov 16 Javascript
JS模拟按钮点击功能的方法
Dec 22 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
微信小程序实现图片压缩功能
Jan 26 Javascript
vue发送ajax请求详解
Oct 09 Javascript
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
uni-app如何实现增量更新功能
Jan 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/10/12 PHP
php中取得文件的后缀名?
2012/02/20 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
Python代码的打包与发布详解
2014/07/30 Python
九步学会Python装饰器
2015/05/09 Python
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
面试求职的个人自我评价
2013/11/16 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书
单身证明格式样本
2015/06/15 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技