标签:强制类型转换 强制 改变 字符串类型 结果 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); }) }
标签:强制类型转换 强制 改变 字符串类型 结果 class cti ash prot
原文地址:http://www.cnblogs.com/mc67/p/6935400.html