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 getElementsByClassName实现代码
Oct 11 Javascript
基于JQuery的一句话搞定手风琴菜单
Sep 14 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
Apr 25 Javascript
jQuery中noconflict函数的实现原理分解
Feb 03 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
Jul 18 Javascript
JavaScript 深层克隆对象详解及实例
Nov 03 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
Apr 28 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
Jul 31 Javascript
详谈js中标准for循环与foreach(for in)的区别
Nov 02 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
May 23 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
javascript eval函数深入认识
2009/02/21 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
HTML的select控件美化
2017/03/27 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
方法名是否可以与构造器的名字相同
2012/06/04 面试题
临床医学系毕业生推荐信
2013/11/09 职场文书
材料采购员岗位职责
2013/12/17 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
新员工入职感言
2014/02/01 职场文书
三八节主持词
2014/03/17 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
javascript函数式编程基础
2021/09/15 Javascript
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript