1.深拷贝
let obj = {
a:1,
b:{
c:2,
d:{
e:3,
f:[1,2,3,4,5]
}
}
}
function deepClone(obj,cloneData){
let clone = cloneData || {}
for( let i in obj){
if(typeof obj[i] === "object" && obj[i] !== null){
clone[i] = Array.isArray(obj[i])? [] : {}
deepClone(obj[i], clone[i])
}else{
clone[i] = obj[i]
}
}
return clone
}
let obj1 = deepClone(obj)
obj.b.d.e = 1
obj.b.d.f.push(7)
console.log(obj,obj1)
2.日期过滤
function getTime(time = null){//获取年月日时分秒
const t = time? new Date(time):new Date()
return {
year:t.getFullYear(),
month:t.getMonth(),
date:t.getDate(),
week:t.getDay(),
hours:t.getHours(),
minutes:t.getMinutes(),
seconds:t.getSeconds(),
}
}
3.去重
function rmSame(param){
let newParams = []
param = Array.isArray(param)?param:param.split('')
param.map(item=>{
if(!newParams.includes(item)){
newParams.push(item)
}
})
return {str:newParams.join(''),arr:newParams}
}
4.数组对象元素排序
let arr = [
{
id:1,
name:'Li Lei',
age:18,
from:'成都'
},
{
id:8,
name:'Li Hua',
age:20,
from:'绵阳'
},
{
id:3,
name:'Han Mei Mei',
age:16,
from:'德阳'
},
{
id:44,
name:'Teacher',
age:40,
from:'泸州'
},
]
function sortFn(param, name,isUp = true){
param.sort(function(a,b){
if(typeof a[name] === "number"){
return isUp?a[name]-b[name]:b[name]-a[name]
}
else if(typeof a[name] === "string"){
let str1 = a[name].toLowerCase();
let str2 = b[name].toLowerCase();
let num;
if(isUp){
num = str1<str2?-1:1
}else{
num = str1>str2?-1:1
}
return num
}else{
alert('只能计算字符串和数字类型')
}
})
console.log(arr)
}
sortFn(arr,"from")