1. 输入一个值,返回其数据类型
function type(para) {
return Object.prototype.toString.call(para)
}
2、数组去重
var arr=[1,2,3,4,2,5,3]
function unique1(arr) {
return [...new Set(arr)]
}
console.log(unique1(arr))
function unique2(arr) {
var obj = {};
return arr.filter(ele => {
if (!obj[ele]) {
obj[ele] = true;
return true;
}
})
}
function unique3(arr) {
var result = [];
arr.forEach(ele => {
if (result.indexOf(ele) == -1) {
result.push(ele)
}
})
return result;
}
3、字符串去重
var arr1 = "1233fddfd&3434fdsaff&454545&4545444rfdsfds&545gdsgs";
var arr2 = "";
for(var i=0;i<arr1.length;i++){
if(arr2.indexOf(arr1[i])==-1){
arr2 +=arr1[i]
}
}
console.log(arr2)
字符串去重,字母在前,数字在后顺序排列
var str = "1233fddfd&3434fdsaff&454545&4545444rfdsfds&545gdsgs";
var n = "";
var s="";
for(var i = 0;i < str.length; i++){
if((str[i]>=0&&str[i]<=9)&&n.indexOf(str[i])==-1){
n+=str[i];
}else if((str.charCodeAt(i)>=97&&str.charCodeAt(i)<=122)&&s.indexOf(str[i])==-1){
s+=str[i];
}
}
console.log(n+s); //12345fdsarg
4、深拷贝 浅拷贝
1.浅拷贝常用方法
slice
var arr1=[1,2,3]
arr2=arr1.slice()
console.log(arr1);//[1,2,3]
console.log(arr2);//[1,2,3]
concat
var arr1=[1,2]
arr2=arr1.concat();
console.log(arr1);//[1,2]
console.log(arr2);//[1,2]
2.深拷贝
1. JSON.parse(JSON.stringify())
let arr=[1,3,{username:'xiaoming'}]
let arr2=JSON.parse(JSON.stringify(arr))
arr2[2].username='liwen'
console.log(arr,arr2)
原理: 用JSON.stringify将对象转成JSON字符串,再用JSON.parse()把字符串解析成对象,一去一来,新的对象产生了,而且对象会开辟新的栈,实现深拷贝。
**这种方法虽然可以实现数组或对象深拷贝,但不能处理函数。**
let arr=[1,3,{username:'make'},function(){}]
let arr2 = JSON.parse(JSON.stringify(arr));
arr2[2].username = 'duncan';
console.log(arr, arr2);
2. 手写递归方法