最近一直是在家办公,感觉自己要懒死了。再不整点东西,学点东西,自己又要被很多人超越了。如果有人有很好的学习方法望分享。
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('上海自来水来自海上'));