函数积累 ----- 更新中(若有错误,请大家指导改正)

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")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值