js数组去重、排序、第一次出现没有重复的字母、深度克隆、冒泡排序

1.数组去重

var arr=[1,2,3,3,2,1,5,5,3,5,4,7,6,8,0,0];
Array.prototype.unique=function () {
    var template={};
    var newArr=[];
    var len=this.length
    for (var i = 0; i < len ; i++) {
        if(!template[this[i]]){
            template[this[i]]=' ';
            newArr.push(this[i])
        }
     }
    return newArr;
}
console.log(arr.unique())

2.数组排序

var arr=[0,4,10,11,2,-4,13,3]
/*
     1.必须写两个形参
     2.看返回值  
         1).返回值为负数时,那么前面的放在前面
         2).返回值为整数是,那么后面的放在前面
         3).返回值为0时,不变   
*/
        
//升序排序
arr.sort(function(x,y){
     /*if(x<y){
           return -1
      }else{
           return 1
      }*/
      return x-y
})

  //降序排序
arr.sort(function(x,y){
      /*if(x>y){
           return -1
       }else{
           return 1
       }*/
       return y-x
})

 3.第一次出现没有重复的字母

var str='qwertyyauiticuyvoiubiwqriuewriutyyiuyiureyiuerutipywe';
var obj = {};
for (var i = 0; i < str.length; i++) {
    var v = str.charAt(i); //获得每个字符
    if (obj[v] && obj[v].value == v) { //筛选
         obj[v].count = ++obj[v].count; //记录每个重复的字符个数
    } else {
         obj[v] = {};
         obj[v].count = 1;
        obj[v].value = v;
     }
 }
for (key in obj) {
    if(obj[key].count==1){
        console.log(obj[key].value)
        break;
    }
}

  4.第一次出现没有重复的字母

var str='qeqweqwriuyewtiewuatyewtciweytiduewtypewityewpiweiut';
function strCount(str){
    var obj={}
    for (var i = 0; i < str.length; i++) {
          if(!obj[str[i]]){
           obj[str[i]]=1
           }else{
            obj[str[i]]=++obj[str[i]]
           }
      }
      for(var i in obj){
            if(obj[i]==1){
            return i
        }
     }
}
console.log(strCount(str));

 5.深度克隆

var obj={
    name:'张三',
        age:18,
        skill:['javascript','HTML5','CSS3','VUE'],
        web:{
            HTML:'王五',
            JS:{
                name:'张六'
               }
          }
   }
 function deepClone(origin,targetObj){
       var target=targetObj||{};
       toStr=Object.prototype.toString;
       arrStr='[object Array]';
       for(var prop in origin){
           if(origin.hasOwnProperty(prop)){
                if(typeof(origin[prop])=='object' && origin[prop]!=='null'){
                    if(toStr.call(origin[prop])==arrStr){
                            target[prop]=[];
                        }else{
                            target[prop]={};
                        }
                        deepClone(origin[prop],target[prop])   
                    }else{
                        target[prop]=origin[prop]
                    }
                }
            }
     return target;
 }
var  obj1={}
var newObj= deepClone(obj,obj1) console.log(newObj)

6.冒泡排序

function bubbleSort(arr) {
    var len = arr.length;
    for (var i = 0; i < len; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j+1]) {        
                var temp = arr[j+1];       
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

 

posted @ 2018-06-11 13:46  (⊙o⊙)买噶  阅读(921)  评论(0编辑  收藏  举报