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 相关文章推荐
Google排名中的10个最著名的 JavaScript库
Apr 27 Javascript
jquery validate在ie8下的bug解决方法
Nov 13 Javascript
深入理解JQuery keyUp和keyDown的区别
Dec 12 Javascript
关于javaScript注册click事件传递参数的不成功问题
Jul 18 Javascript
node.js中的buffer.copy方法使用说明
Dec 14 Javascript
手机端转盘抽奖代码分享
Sep 10 Javascript
AngularJS 2.0入门权威指南
Oct 08 Javascript
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
vux-scroller实现移动端上拉加载功能过程解析
Oct 08 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 Javascript
JS的深浅复制详细
Oct 16 Javascript
利用js实现简单开关灯代码
Nov 23 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类
2006/11/25 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
初识PHP中的Swoole
2016/04/05 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
详解node.js 事件循环
2020/07/22 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
numpy中索引和切片详解
2017/12/15 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
HTTP状态码详解
2021/03/18 杂记
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
Ibatis如何调用存储过程
2015/05/15 面试题
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
益达广告词
2014/03/14 职场文书
关于读书的演讲稿
2014/05/07 职场文书
法人委托书
2014/07/31 职场文书
我的1919观后感
2015/06/03 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
PyTorch 如何自动计算梯度
2021/05/23 Python