javaScript 去除数组中的重复值
Posted 咕咚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript 去除数组中的重复值相关的知识,希望对你有一定的参考价值。
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 去除数组中的重复值的主要内容,如果未能解决你的问题,请参考以下文章