原生js中的一些常用方法

最近一直是在家办公,感觉自己要懒死了。再不整点东西,学点东西,自己又要被很多人超越了。如果有人有很好的学习方法望分享。

js深度克隆方法
//origin 原数据  target目标数据
//第一种
function deepClone(origin){
    
    
    var str,target= origin instanceof Array? [] : {
    
    };
    if(typeof origin !== 'object'){
    
    
        return;
    }else if(window.JSON){
    
    
        str = JSON.stringify(origin);
        target= JSON.parse(str);
    }else{
    
    
        for(var i in origin){
    
    
            target[i] = typeof origin[i] === 'object' ?deepClone(origin[i]):origin[i]
        }
    }
    return target;
}
//第二种
function deepClone(origin,target){
    
    
    var target= target|| {
    
    };
    for(key in origin){
    
    
        if(typeof origin[key] == 'object'){
    
    
            target[key] = (origin[key].constructor === Array)?[]:{
    
    }
            deepClone(origin[key],target[key]);
        }else{
    
    
            target[key] = origin[key]
        }
    }
    return target;
}
//第3种(只适合部分)
function deepClone(origin,target){
    
    
   var target = target || {
    
    };
   target = JSON.parse(JSON.stringify(origin));
   return target;
}
原生js数组去重的方法
//第一种
function unique(ary){
    
    
    var obj={
    
    };
    for(var i=0;i<ary.length;i++){
    
    
        var cur = ary[i];
        if(obj[cur] == cur){
    
    
            ary[i] = ary[ary.length-1];
            ary.length--;
            i--;
        }
        obj[cur] = cur;
    }
    return ary;
}
console.log(unique([2,3,2,4,3,5,6,1,1]));
//第二种
function unique(ary){
    
    
    var arr1 = [];
    var obj = {
    
    };
    for(var i=0;i<ary.length;i++){
    
    
        if(!obj[ary[i]]){
    
    
            arr1.push(ary[i]);
            obj[ary[i]] = 1;

        }
    }
    return arr1;
};
var arr = [3,1,1,2,2,3,3,4,4];
console.log(unique(arr));
//第三种
function unique(arr){
    
    
  var arr1=[];//创建新数组
  for(var i=0;i<arr.length;i++){
    
     //遍历当前数组
  if(arr1.indexOf(arr[i])===-1){
    
    //如果等于-1,那么也是就是新数组中没有一项和当前数组一样
    arr1.push(arr[i])
 }
}
 return arr1;
}
var arr = [3,1,1,2,2,3,3,4,4];
console.log(unique(arr));
//第四种   es6中的语法不属于原生js
const array = [1, 1, 2, 3, 5, 5, 1]
const uniqueArray = [...new Set(array)];
//Result: [1, 2, 3, 5]

判断是不是回文(回文就是前后字一样 例如:12321)
function isPalindrome(str){
    
    
  str +="";
  for(var i=0,j=str.length-1;i<j;i++,j--){
    
    
      if(str.charAt(i) !== str.charAt(j)){
    
    
          return false;
      }
  }
  return true;
}
console.log(isPalindrome('上海自来水来自海上'));

猜你喜欢

转载自blog.csdn.net/lbchenxy/article/details/104893770