首页 > Web开发 > 详细

javascript 数组去重 unique

时间:2014-03-04 18:44:46      阅读:481      评论:0      收藏:0      [点我收藏+]

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

直接上代码:

bubuko.com,布布扣
 1 Array.prototype.unique = function (isStrict) {
 2     if (this.length < 2)
 3         return [this[0]] || [];
 4     var tempObj = {}, newArr = [];
 5     for (var i = 0; i < this.length; i++) {
 6         var v = this[i];
 7         var condition = isStrict ? (typeof tempObj[v] != typeof v) : false;
 8         if ((typeof tempObj[v] == "undefined") || condition) {
 9             tempObj[v] = v;
10             newArr.push(v);
11         }
12     }
13     return newArr;
14 }

验证:
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认为相同
bubuko.com,布布扣

注意:

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

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

javascript 数组去重 unique,布布扣,bubuko.com

javascript 数组去重 unique

原文:http://www.cnblogs.com/gaojun/p/3579459.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!