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 07 Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 Javascript
js arguments,jcallee caller用法总结
Nov 30 Javascript
jQuery 选择同时包含两个class的元素的实现方法
Jun 01 Javascript
JavaScript中的this使用详解
Jul 27 Javascript
JavaScript中 ES6变量的结构赋值
Jul 10 Javascript
vue中使用gojs/jointjs的示例代码
Aug 24 Javascript
发布一款npm包帮助理解npm的使用
Jan 03 Javascript
vue项目中实现的微信分享功能示例
Jan 21 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 Javascript
react中hook介绍以及使用教程
Dec 11 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
php面向对象全攻略 (五) 封装性
2009/09/30 PHP
php入门教程 精简版
2009/12/13 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
js实现二级导航功能
2017/03/03 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
python将人民币转换大写的脚本代码
2013/02/10 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
美德少年事迹材料500字
2014/08/19 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
工作经历证明范本
2015/06/15 职场文书