晚上无事,偶然看到这么个小测试,拿来写一写,希望大家提建议;

直接上代码:

 Array.prototype.unique = function (isStrict) {
if (this.length < 2)
return [this[0]] || [];
var tempObj = {}, newArr = [];
for (var i = 0; i < this.length; i++) {
var v = this[i];
var condition = isStrict ? (typeof tempObj[v] != typeof v) : false;
if ((typeof tempObj[v] == "undefined") || condition) {
tempObj[v] = v;
newArr.push(v);
}
}
return newArr;
} 验证:
var arr = ["9", 9, 1, 3, 8, 7, 7, 6, 6, 5, 7, 8, 8, 7, 4, 3, 1, 22, 22, 'a', 'a','bcd', 'abc', 'bcd'];
var newArr = arr.unique(true);
alert(newArr.join(","));//严格模式:9,9,1,3,8,7,6,5,4,22,a,bcd,abc,将其中"9",9认为不同 var newArr = arr.unique();
alert(newArr.join(","));//普通模式:9,1,3,8,7,6,5,4,22,a,bcd,abc,将其中"9",9认为相同

注意:

1、使用临时对象tempObj,将数组的值作为对象的键值,遍历数组时对当前值根据对象键值判断,不存在就将这个数组的值push到新数组中。提高效率

2、使用类型判断,如果当前数组值做为对象键,所对应的对象值类型与当前值类型一致,则可以根据参数(isStirct严格模式)决定是否去重,true表示严格,对于字符为22,或数字为22都认为一样,否则保留

看了一下JavaScript高级程序设计中关于数组的操作,又想到种更简单的去重方法,代码如下:

 Array.prototype.unique = function () {
var newArr = [];
for (var i = 0; i < this.length; i++) {
if (newArr.indexOf(this[i]) == -1) {
newArr.push(this[i]);
}
}
return newArr;
}
var arr = ['a','b',1,4,5,8,4,3,1,'a','1'];
alert(arr.unique());//a,b,1,4,5,8,3,1 indexOf默认调用===,因此将1与'1'认为是不同

最新文章

  1. dex文件格式二
  2. HTTP笔记之一
  3. tab切换的两种方法
  4. OGNL和Struts2标签
  5. CodeForces 445B DZY Loves Chemistry
  6. 转:vs发布window应用程序时出错:未能签名 ...\setup.exe
  7. Windows phone 之Interaction.Triggers的使用
  8. mp4下载完后才能播放的问题
  9. hdu 4372 第一类stirling数的应用/。。。好题
  10. C#字符串和16进制转换
  11. Console 口配置 Telnet 登录方式典型配置指导
  12. Judy Beta 第二天
  13. 微信小程序-用户拒绝授权使用 wx.openSetting({}) 重新调起授权用户信息
  14. GridView的stretchMode属性
  15. python全栈开发day61-django简单的出版社网站展示,添加,删除,编辑(单表的增删改查)
  16. Luogu2612 ZJOI2012 波浪 DP
  17. Java编程思想 学习笔记2
  18. C# 数据库数据动态插入(反射)
  19. lncRNA研究利器之&quot;TANRIC&quot;
  20. Spring Cloud实战之初级入门(四)— 利用Hystrix实现服务熔断与服务监控

热门文章

  1. C#常用操作类库一(验证类)
  2. 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
  3. 关于如何通过json更改背景图片
  4. D - 图论
  5. 安卓微信浏览器中location.href失效的问题
  6. (实用篇)浅谈PHP拦截器之__set()与__get()的理解与使用方法
  7. 几个linux终端的有趣玩法
  8. UDP收发buffer尺寸对收发包流量的影响
  9. python用Tesseract读取图片中的中文,出现乱码
  10. metagenome 简介