码迷,mamicode.com
首页 > 编程语言 > 详细

javaScript 去除数组中的重复值

时间:2017-06-02 23:57:23      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:强制类型转换   强制   改变   字符串类型   结果   class   cti   ash   prot   

javaScript 去除数组中的重复值

//js 数组去除重复的方法:ps:forEach是ECMA5中Array新方法中最基本的一个,就是遍历

Array.prototype.unique=function (){
      var result=[];
      this.forEach(function (val){
            if (result.indexOf(val)<0){
                  result.push(val);
            }
      })
      return result;
}

//利用hash表去除重负的方法;这是一种利用空间换区时间的方法;
Array.prototype.uniqueFn=function (){
      var result=[];
      var hash={};
      this.forEach(function (val){
            if (!hash[val]){
                  hash[v]=true;  //下次再遇到这个值,也无法进入循环体;
                  result.push(v);
            }
      })
      result;
}

//因为JavaScript 是弱类型的脚本语言,所有数组中没有数据类型的判断;
//对于下面的数组可能会有误;
// 1,2,’1’,’2’,3],去重结果为[1,2,3],原因在于对象对属性索引时会进行强制类型转换,arr[‘1’]和arr[1]得到的都是arr[1]的值,因此需做一些改变
// arr[x] 会自动的将我们的x转成字符串类型的呀;
Array.prototype.unique=function (){
      var result=[];
      var hash={};
      this.forEach(function (val){
            var type=typeof(val);
            hash[val] || (hash[val]=new Array());
            if(hash[val].indexOf(type)<0){ //对应的可以下是否又该类型的值;
                  hash[val].push(type); //存值对应的数据类型;
                  result.push(val); //存值
            }
      })
}

 还有一种方法,有点绕;不过还挺不错滴呀;

先排序后去重

Array.prototype.unique=function(){
      var result=[this[0]]; //取出头一个数据;
      this.sort();  //排序后,有重复的数据会拍再一起
      this.forEach(function (val){
            val!=result[result.length-1] && result.push(val);
      })
}

 

javaScript 去除数组中的重复值

标签:强制类型转换   强制   改变   字符串类型   结果   class   cti   ash   prot   

原文地址:http://www.cnblogs.com/mc67/p/6935400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!