js常用方法封装

1.时间戳转日期格式

 /**
     * 时间戳转日期格式
     * @param {Object} timeStamp
     */
    timeStampTurnTime(timeStamp) {
        if (timeStamp != undefined && timeStamp != "" && timeStamp > 0) {
            var date = new Date()
            date.setTime(timeStamp * 1000)
            var y = date.getFullYear()
            var m = date.getMonth() + 1
            m = m < 10 ? "0" + m : m
            var d = date.getDate()
            d = d < 10 ? "0" + d : d
            var h = date.getHours()
            h = h < 10 ? "0" + h : h
            var minute = date.getMinutes()
            var second = date.getSeconds()
            minute = minute < 10 ? "0" + minute : minute
            second = second < 10 ? "0" + second : second
            return y + "-" + m + "-" + d + " " + h + ":" + minute + ":" + second
        } else {
            return ""
        }
    },

2.日期与字符串互相转换

//日期->字符串
dateToString(date){ 
      var year = date.getFullYear(); 
      var month =(date.getMonth() + 1).toString(); 
      var day = (date.getDate()).toString();  
      if (month.length == 1) { 
          month = "0" + month; 
      } 
      if (day.length == 1) { 
          day = "0" + day; 
      }
      var dateTime = year + "-" + month + "-" + day;
      return dateTime; 
    },
//字符串->日期
stringToDate(dateStr,separator){
     if(!separator){
            separator="-";
     }
     var dateArr = dateStr.split(separator);
     var year = parseInt(dateArr[0]);
     var month;
     //处理月份为04这样的情况                         
     if(dateArr[1].indexOf("0") == 0){
         month = parseInt(dateArr[1].substring(1));
     }else{
          month = parseInt(dateArr[1]);
     }
     var day = parseInt(dateArr[2]);
     var date = new Date(year,month -1,day);
     return date;
 },

3.倒计时

 /**
     * 倒计时
     * @param {Object} seconds 秒
     */
    countDown(seconds) {
        let [day, hour, minute, second] = [0, 0, 0, 0]
        if (seconds > 0) {
            day = Math.floor(seconds / (60 * 60 * 24))
            hour = Math.floor(seconds / (60 * 60)) - day * 24
            minute = Math.floor(seconds / 60) - day * 24 * 60 - hour * 60
            second = Math.floor(seconds) - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60
        }
        if (day < 10) {
            // day = '0' + day
        }
        if (hour < 10) {
            // hour = '0' + hour
        }
        if (minute < 10) {
            // minute = '0' + minute
        }
        if (second < 10) {
            // second = '0' + second
        }
        return {
            d: day,
            h: hour,
            i: minute,
            s: second
        }
    },

4.数组去重

   /**
     * 数值去重
     * @param {Array} arr 数组
     * @param {string} field 字段
     */
    unique(arr, field) {
        const res = new Map()
        return arr.filter(a => !res.has(a[field]) && res.set(a[field], 1))
    },

5.获取某一天的日期

 /**
     * 获取某天日期
     * @param {Object} day 
     * 以当天日期为准,day = 1 时则是明天的日期 day = -1则是昨天的日期 
     */
    getDay: function(day) {
        var today = new Date()
        var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day
        today.setTime(targetday_milliseconds)

        const doHandleMonth = function(month) {
            var m = month
            if (month.toString().length == 1) {
                m = "0" + month
            }
            return m
        }

        var tYear = today.getFullYear()
        var tMonth = today.getMonth()
        var tDate = today.getDate()
        var tWeek = today.getDay()
        var time = parseInt(today.getTime() / 1000)
        tMonth = doHandleMonth(tMonth + 1)
        tDate = doHandleMonth(tDate)

        const week = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
        return {
            t: time,
            y: tYear,
            m: tMonth,
            d: tDate,
            w: week[tWeek]
        }
    },

6.复制

 /**
     * 复制
     * @param {Object} message
     * @param {Object} callback
     */
    copy(value, callback) {
        var oInput = document.createElement("input") //创建一个隐藏input(重要!)
        oInput.value = value //赋值
        document.body.appendChild(oInput)
        oInput.select() // 选择对象
        document.execCommand("Copy") // 执行浏览器复制命令
        oInput.className = "oInput"
        oInput.style.display = "none"
        vue.$message({
            message: "复制成功",
            type: "success"
        })
        typeof callback == "function" && callback()
    },

7.深度拷贝

  /**
     * 深度拷贝对象
     * @param {Object} obj
     */
    deepClone(obj) {
        const isObject = function(obj) {
            return typeof obj == "object"
        }

        if (!isObject(obj)) {
            throw new Error("obj 不是一个对象!")
        }
        //判断传进来的是对象还是数组
        let isArray = Array.isArray(obj)
        let cloneObj = isArray ? [] : {}
        //通过for...in来拷贝
        for (let key in obj) {
            cloneObj[key] = isObject(obj[key]) ? this.deepClone(obj[key]) : obj[key]
        }
        return cloneObj
    }

8.对象数组去重

1.保留一个

let arr = [
        { id: 0, name: "张三" },
        { id: 1, name: "李四" },
        { id: 2, name: "王五" },
        { id: 3, name: "赵六" },
        { id: 1, name: "孙七" },
        { id: 2, name: "周八" },
        { id: 2, name: "吴九" },
        { id: 3, name: "郑十" },
      ];
        const removeDuplicateObj = (arr) => {
          let obj = {};
          arr = arr.reduce((newArr, next) => {
            obj[next.id] ? "" : (obj[next.id] = true && newArr.push(next));
            return newArr;
          }, []);
          return arr;
        };

2.去除所有重复的

  const removeDuplicateObj = (arr) => {
        let obj = {};
        arr = arr.reduce((newArr, next) => {
          obj[next.key] ? "" : (obj[next.key] = true && newArr.push(next));
          return newArr;
        }, []);
        return arr;
      };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值