Javascript 去除数组的重复元素

 更新时间:2010年05月04日 17:20:58   作者:  
在js中,如何去除指定数组中的重复元素?
我打开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”,意思大概即“不要过度设计,适用至上”,我这几年的工作经验也常常印证着这个道理。不知道你怎么看。

相关文章

  • 微信小程序学习之wxs使用教程

    微信小程序学习之wxs使用教程

    这篇文章主要给大家介绍了关于微信小程序学习之wxs使用教程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • TypeScript之调用栈的实现

    TypeScript之调用栈的实现

    这篇文章主要介绍了TypeScript之调用栈的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • JavaScript encodeURI 和encodeURIComponent

    JavaScript encodeURI 和encodeURIComponent

    encodeURI和encodeURIComponet函数都是javascript中用来对URI进行编码,将相关参数转换成UTF-8编码格式的数据。URI在进行定位跳转时,参数里面的中文、日文等非ASCII编码都会进行编码转换
    2015-12-12
  • 原生js实现省市区三级联动代码分享

    原生js实现省市区三级联动代码分享

    这篇文章主要介绍了原生js实现省市区三级联动功能以及代码分享,对此有需要的朋友可以参考学习下。
    2018-02-02
  • 原生js添加节点appendChild、insertBefore方式

    原生js添加节点appendChild、insertBefore方式

    这篇文章主要介绍了原生js添加节点appendChild、insertBefore方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 详解PHP中pathinfo()函数导致的安全问题

    详解PHP中pathinfo()函数导致的安全问题

    这篇文章主要给大家介绍了PHP中pathinfo()函数导致的安全问题,文中给出了详细的介绍与示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,需要的朋友可以参考下,下面来一起看看吧。
    2017-01-01
  • 半角全角相互转换的js函数

    半角全角相互转换的js函数

    全角空格为12288,半角空格为32 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 .
    2009-10-10
  • 深入学习Bootstrap表单

    深入学习Bootstrap表单

    这篇文章主要为大家详细介绍了Bootstrap表单的基础知识,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 用js实现手把手教你月入万刀(转贴)

    用js实现手把手教你月入万刀(转贴)

    用js实现手把手教你月入万刀(转贴)...
    2007-11-11
  • javascript 二进制运算技巧解析

    javascript 二进制运算技巧解析

    javascript 中的二进制运算的一些技巧,晒出来和你们分享一下,希望可以帮助你们
    2012-11-11

最新评论