javascript之数据去重

javascript数据去重

 var arr = [1,5,5,5,6,6,6,3,3,2,2,1,1,9,9,9,"a","a","s","s"];
 Array.prototype.unique = function(){
     var newArr = [];
     var len = this.length;
     var obj = {};
     for(var i = 0 ; i < len ; i++){
         if(!obj[this[i]]){
             obj[this[i]] = true;
             newArr.push(this[i]);
         }
     }
     return newArr;0 
 }
 var arr2 = arr.unique();

 var str = "aaabbbccc";
 function uniqueString(str){
     var len = str.length;
     var newStr = "";
     for(var i = 0 ; i < len ; i++){
         if(newStr.indexOf(str[i]) == -1){
             newStr += str[i];
         }
     }
     return newStr;
 }
 var str2 = uniqueString(str);

 Array.prototype.distinct = function () {
     var arr = this,
         result = [],
         i,
         j,
         len = arr.length;
     for (i = 0; i < len; i++) {
         for (j = i + 1; j < len; j++) {
             if (arr[i] === arr[j]) {
                 j = ++i;
             }
         }
         result.push(arr[i]);
     }
     return result;
 }

 var arra = [1, 2, 3, 4, 4, 1, 1, 2, 1, 1, 1];
 console.log(arra.distinct());

 Array.prototype.unique = function(){
     var len = this.length;
     for(var i = 0 ; i < len ; i++){
         for(var j = i + 1 ; j < len ; j++){
             if(this[i] === this[j]){
                 this.splice(j,1);
                 len--;
                 j--;
             }
         }
     }
     return this;
 }
 var arr = [1,1,1,2,2,4,4,5,5,3,3,2,2,2,5,5,5];
 var arr2 = arr.unique();

 Array.prototype.unique = function(){
     var len = this.length;
     var arr = this;
     arr.sort(function(a,b){
         return a - b;
     })
     function loop(index){
         if(index >= 1){
             if(arr[index] === arr[index - 1]){
                 arr.splice(index,1);
             }
             loop(index - 1);
         }
     }
     loop(len - 1);
     return arr;
 }
 var arr = [1,1,2,3,3,3,2,3,3,4,4,5,4,1,1];
 var arr2 = arr.unique();
 console.log(arr2);

 Array.prototype.distinct = function () {
     var arr = this,
         result = [],
         len = arr.length;
     arr.forEach(function (v, i, arr) { //这里利用map,filter方法也可以实现
         var bool = arr.indexOf(v, i + 1); //从传入参数的下一个索引值开始寻找是否存在重复
         if (bool === -1) {
             result.push(v);
         }
     })
     return result;
 };
 var a = [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 2, 2, 1, 23, 1, 23, 2, 3, 2,
     3, 2, 3
 ];
 var b = a.distinct();
 console.log(b.toString()); //1,23,2,3

 Array.prototype.unique = function(){
     var len = this.length;
     var res = [this[0]];
     for(var i = 0 ; i < len ; i++){
         var flag = false;
         for(var j = 0 ; j < res.length ; j++){
             if(this[i] === res[j]){
                 flag = true;
                 break;
             }
         }
         if(!flag){
             res.push(this[i]);
         }
     }
     return res;
 }
 var arr = [1,1,1,5,5,5,6,6,6,4,4,4];
 var arr2 = arr.unique();

 // 利用es7的includes方法
 Array.prototype.unique = function(){
     var len = this.length;
     var newArr = []
     for(var i = 0 ; i < len ; i++){
         if(!newArr.includes(this[i])){
             newArr.push(this[i]);
         }
     }
     return newArr;
 }
 var arr = [1,2,2,3,3,3,2,2,4,4,4,1,5,5,5,6,6,6,1,1]
 var arr2 = arr.unique();
 console.log(arr2);
 
 Array.prototype.unique = function(){
     var len = this.length;
     var newArr = [];
     for(var i = 0 ; i < len ; i++){
         if(newArr.indexOf(this[i]) == -1){
             newArr.push(this[i]);
         }
     }
     return newArr;
 }
 var arr = [1,2,3,5,4,4,4,2,2,2,1,2,3]
 var arr2 = arr.unique();
 console.log(arr2);

 // 利用数组冒泡实现从小到大排序
 Array.prototype.sortArr = function(){
     var len = this.length;
     for(var i = 0 ; i < len-1 ; i++){
         for(var j = 1 ; j < len - 1 ; j++){
             if(this[j] > this[j+1]){
                 var temp = this[j+1];
                 this[j+1] = this[j];
                 this[j] = temp
             }
         }
     }
     return this;
 }
 var arr = [11,55,66,22,33,45,99,77];
 var arr2 = arr.sortArr();
 console.log(arr2);


 function unique(arr) {
     if(!Array.isArray(arr)) {
         console.log('Type Error : arr is not Array');
     }
     arr = arr.sort();
     let res = [arr[0]];
     for(let i = 1 ; i < arr.length ; i++) {
         if(arr[i] !== arr[i - 1]) {
             res.push(arr[i]);
         }
     }
     return res;
 }

 //利用filter
 function filter(arr) {
     return arr.filter((item,index) => {
         return arr.indexOf(item,0) === index;
     })
 }
 //利用map数据结果去重
 function map(arr) {
     let map = new Map();
     let res = [];
     for(let i = 0 ; i < arr.length ; i++) {
         if(map.has(arr[i])) {
             map.set(arr[i],true);
         }else {
             map.set(arr[i],false);
             res.push(arr[i]);
         }
     }
     return res;
 }

 function reduce(arr) {
     let sortArr = arr.sort();
     let res = [];
     sortArr.reduce((prev,cur) => {
         if(prev !== cur) {
             res.push(prev);
         }
         return cur;
     })
     res.push(sortArr[sortArr.length - 1]);
     return res;
 }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值