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 相关文章推荐
些很实用且必用的小脚本代码
Jun 26 Javascript
JavaScript CSS修改学习第一章 查找位置
Feb 19 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 Javascript
Javascript call和apply区别及使用方法
Nov 14 Javascript
对于jQuery性能的一些优化建议
Aug 13 Javascript
JS实现自动阅读单词(有道单词本添加功能)
Nov 14 Javascript
如何利用JQuery实现从底部回到顶部的功能
Dec 27 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
webpack中如何使用雪碧图的示例代码
Nov 11 Javascript
浅谈javascript错误处理
Aug 11 Javascript
node脚手架搭建服务器实现token验证的方法
Jan 20 Javascript
React配置子路由的实现
Jun 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
详解node.js 事件循环
2020/07/22 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
Python中IPYTHON入门实例
2015/05/11 Python
python动态参数用法实例分析
2015/05/25 Python
python获得一个月有多少天的方法
2015/06/04 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
python实现三种随机请求头方式
2021/01/05 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
学校介绍信范文
2014/01/14 职场文书
中标通知书格式
2015/04/17 职场文书
2015年资料员工作总结
2015/04/25 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
超市主管竞聘书
2015/09/15 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL