zoukankan      html  css  js  c++  java
  • 工作中收集的工具类函数库

    对象、数组对象

    1. clone( data ) 深拷贝

      clone = function (data) {
          var tmp = data.constructor === Array ? [] : {}
          for (var k in data) {
            if (!data[k]) {
              tmp[k] = data[k]
            } else if (data[k].constructor === Object || data[k].constructor === Array) {
              tmp[k] = deepClone(data[k])
            } else {
              tmp[k] = data[k]
            }
          }
          return tmp
        }
    2. formateData( ne, struct ) 数据格式化,去除struct中不存在的key

      // 格式化数据
        formateData: function (ne, struct) {
          return getMess(ne, struct)
        }
    3. compareData( ol, ne, struct ) 数据比对,ol为原数据, ne为新数据, struct为数据结构

      // json数据格式化 ol为原数据,ne为新数据, struct为数据结构
        compareData: function (ol, ne, struct) {
          if (struct) {
            // 传入了 取出数据结构的 按照取出数据结构进行比对
            var mps = getMess(ne, struct)
            return getchanged(ol, mps)
          } else {
            // 没有传入的
            return getMy(ol, ne)
          }
        }
      // 结构格式化
      function getMess (ne, struct) {
        var tem = {}
        if (!ne) {
          // 假值
          // null/0/''
          tem = ne
        } else if (ne.constructor === Array) {
          // 数组
          tem = []
          for (var i = 0; i < ne.length; i++) {
            tem.push(getMess(ne[i], struct[0]))
          }
        } else if (ne.constructor === Object) {
          // 对象
          tem = {}
          for (var k in struct) {
            tem[k] = getMess(ne[k], struct[k])
          }
        } else {
          // 简单值
          tem = ne
        }
        return tem
      }
      // 数据比对
      function getMy (ol, ne, struct) {
        var tem = {}
        for (var ta in ne) {
          if (ta === 'sel') continue
          if (ta === 'id') tem['id'] = ne[ta]
          // eslint-disable-next-line eqeqeq
          if (ol[ta] != ne[ta] && struct[ta]) {
            if (ne[ta] instanceof Array) {
              tem[ta] = []
              // 先判断b的是否都在
              for (var i = 0; i < ne[ta].length; i++) {
                // 是否是新增的 新增的没有id
                if (ne[ta][i].id) {
                  for (let j = 0; j < ol[ta].length; j++) {
                    if (ne[ta][i].id === ol[ta][j].id && ne[ta][i].id !== undefined && ol[ta][i].id !== undefined) {
                      ol[ta][j].jsonsel = true
                      tem[ta].push(getMy(ol[ta][i], ne[ta][i], struct[ta][0]))
                    }
                  }
                } else {
                  // 没有id的新增数据
                  // 这里是新增的获取数据
                  tem[ta].push(ne[ta][i])
                }
              }
      
              // 标示已经被删除的
              for (let j = 0; j < ol[ta].length; j++) {
                if (!ol[ta][j].jsonsel) {
                  tem[ta].push({
                    id: ol[ta][j].id,
                    isdeleted: 1
                  })
                }
              }
            } else if (ne[ta] instanceof Object && !(ne[ta] instanceof Date)) {
              if (ne[ta].id) {
                if (ne[ta].id === ol[ta].id && ne[ta].id !== undefined && ol[ta].id !== undefined) {
                  tem[ta] = getMy(ol[ta], ne[ta], struct[ta])
                }
              } else {
                // 这里是新增的获取数据
                tem[ta] = ne[ta]
              }
            } else {
              tem[ta] = ne[ta]
            }
          }
        }
        if (JSON.stringify(tem) === '{}') {} else { return tem }
      }
      function getchanged (ol, ne, delTimeStr) {
        var tem = {}
        for (var ta in ne) {
          if (ta === 'sel') continue
          if (ta === 'id') tem['id'] = ne[ta]
          if (ta === 'version') tem['version'] = ne[ta]
          // 删除dateString结尾的字段=>for:fa
          if (delTimeStr && (ta.substring(ta.length - 9) === 'dateString' || ta.substring(ta.length - 9) === 'timeString')) {
            delete ne.ta
          }
          // eslint-disable-next-line eqeqeq
          if (ol[ta] != ne[ta] && (typeof (ol[ta]) != 'undefined')) {
            if (ne[ta] instanceof Array) {
              tem[ta] = []
              // 先判断b的是否都在
              for (var i = 0; i < ne[ta].length; i++) {
                // 是否是新增的 新增的没有id
                if (ne[ta][i].id) {
                  for (let j = 0; j < ol[ta].length; j++) {
                    if (ol[ta][j].id && ne[ta][i].id === ol[ta][j].id) {
                      ol[ta][j].jsonsel = true
                      tem[ta].push(getchanged(ol[ta][j], ne[ta][i], delTimeStr))
                    }
                  }
                } else {
                  // 没有id的新增数据
                  // 这里是新增的获取数据
                  tem[ta].push(ne[ta][i])
                }
              }
              // 标示已经被删除的
              for (let j = 0; j < ol[ta].length; j++) {
                if (!ol[ta][j].jsonsel) {
                  if (ol[ta][j].id) {
                    tem[ta].push({
                      id: ol[ta][j].id,
                      isdeleted: 1
                    })
                  }
                }
              }
            } else if (ne[ta] instanceof Object && !(ne[ta] instanceof Date)) {
              if (ne[ta].id) {
                if (ne[ta].id === ol[ta].id && ne[ta].id !== undefined && ol[ta].id !== undefined) {
                  tem[ta] = getchanged(ol[ta], ne[ta], delTimeStr)
                }
              } else {
                // 这里是新增的获取数据
                tem[ta] = ne[ta]
              }
            } else {
              tem[ta] = ne[ta]
            }
          }
        }
        if (JSON.stringify(tem) === '{}') {} else { return tem }
      }
      function getchang (ol, ne, delTimeStr) {
        var tem = {}
        for (var ta in ne) {
          if (ta === 'sel') continue
          if (ta === 'id') tem['id'] = ne[ta]
          if (ta === 'version') tem['version'] = ne[ta]
          // 删除dateString结尾的字段=>for:fa
          if (delTimeStr && (ta.substring(ta.length - 9) === 'dateString' || ta.substring(ta.length - 9) === 'timeString')) {
            delete ne.ta
          }
          // eslint-disable-next-line eqeqeq
          if (ol[ta] != ne[ta] && (typeof (ol[ta]) != 'undefined')) {
            if (ne[ta] instanceof Array) {
              tem[ta] = []
              // 先判断b的是否都在
              for (var i = 0; i < ne[ta].length; i++) {
                // 是否是新增的 新增的没有id
                if (ne[ta][i].id) {
                  for (let j = 0; j < ol[ta].length; j++) {
                    if (ol[ta][j].id && ne[ta][i].id === ol[ta][j].id) {
                      ol[ta][j].jsonsel = true
                      tem[ta].push(getchang(ol[ta][j], ne[ta][i], delTimeStr))
                    }
                  }
                } else {
                  // 没有id的新增数据
                  // 这里是新增的获取数据
                  tem[ta].push(ne[ta][i])
                }
              }
              // 标示已经被删除的
              for (let j = 0; j < ol[ta].length; j++) {
                if (ol[ta][j] instanceof Object) {
                  if (!ol[ta][j].jsonsel) {
                    if (ne[ta][i].id) {
                      tem[ta].push({
                        id: ol[ta][j].id,
                        isdeleted: 1
                      })
                    } else {
                      // 无操作
                    }
                  }
                }
              }
            } else if (ne[ta] instanceof Object && !(ne[ta] instanceof Date)) {
              if (ne[ta].id) {
                if (ne[ta].id === ol[ta].id && ne[ta].id !== undefined && ol[ta].id !== undefined) {
                  tem[ta] = getchang(ol[ta], ne[ta], delTimeStr)
                }
              } else {
                // 这里是新增的获取数据
                tem[ta] = ne[ta]
              }
            } else {
              tem[ta] = ne[ta]
            }
          }
        }
        if (JSON.stringify(tem) === '{}') {} else { return tem }
      }
    4. checkEmpty( data, notEmpty ) 非空校验,数据Model, 校验提示数组

    5. 生成uuid
      uuid = function () {
        var s = []
        var hexDigits = '0123456789abcdef'
        for (var i = 0; i < 36; i++) {
          s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
        }
        s[14] = '4' // bits 12-15 of the time_hi_and_version field to 0010
        s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1) // bits 6-7 of the clock_seq_hi_and_reserved to 01
        s[8] = s[13] = s[18] = s[23] = '-'
      
        var uuid = s.join('')
        return uuid
      }

    日期

    1. timestampToData(timestamp) 格式化时间戳为日期

      // 格式化时间戳为日期格式
      timestampToData = function (timestamp) {
        var date = new Date(timestamp)
        var Y = date.getFullYear()
        var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1)
        var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate())
        return Y + '-' + M + '-' + D
      }
    2. dateCompate(startdate, enddate)起始结束日期对比

      // 起始结束时间对比
      dateCompare = function (startdate, enddate) {
        try {
          var arr = startdate.split('-')
          startdate = new Date(arr[0], arr[1] - 1, arr[2])
          var arrs = enddate.split('-')
          enddate = new Date(arrs[0], arrs[1] - 1, arrs[2])
          if (startdate.getTime() > enddate.getTime()) {
            return false
          } else {
            return true
          }
        } catch (e) {
          return false
        }
      }
    3. getNowTime() 获取当前时间

      getNowTime: function () {
                  var d = new Date();
                  return d.getFullYear() + "-" + date2pos(d.getMonth() + 1) + "-" + date2pos(d.getDate()) + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
              }
    4. getMonthStart() 获取当月第一天

      getSysMonthStart: function (date) {
                  var date= date ? new Date(date) : new Date();
                  date.setDate(1);
                  return $filter('date')(date, 'yyyy-MM-dd');
              }
    5. getMonthEnd() 获取当月最后一天

      // 获得当前月最后一天
              getSysMonthEnd: function (date) {
                  var date= date ? new Date(date) : new Date();
                  return $filter('date')(getCurrentMonthLast(date), 'yyyy-MM-dd');
                  function getCurrentMonthLast(date){
                      var currentMonth=date.getMonth();
                      var nextMonth=++currentMonth;
                      var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
                      var oneDay=1000*60*60*24;
                      return new Date(nextMonthFirstDay-oneDay);
                  }
              }

    ……

    Http请求

    1. doGet(data,url){ return new Promise(funciton(){ ……})}

    2. doPost(data,url){ return new Promise(funciton(){ ……})}

    3. doDelete(data,url){ return new Promise(funciton(){ ……})}

    4. doInsert(data,url){ return new Promise(funciton(){ ……})}

    5. doFormData(data,url){ return new Promise(funciton(){ ……})}

    …… 

  • 相关阅读:
    奔跑吧DKY——团队Scrum冲刺阶段-Day 3
    奔跑吧DKY——团队Scrum冲刺阶段-Day 2
    奔跑吧DKY——团队Scrum冲刺阶段博客汇总
    奔跑吧DKY——团队Scrum冲刺阶段-Day 1-领航
    哈夫曼编码的实现
    电子政务作业——我为政府网站纠错
    20172309 2018-2019《程序设计与数据结构》课程总结
    # Do—Now——团队冲刺博客_总结篇
    数据结构之哈夫曼树
    关于在ViewPager的子页面中不能跳转的问题
  • 原文地址:https://www.cnblogs.com/janice-jia/p/11756045.html
Copyright © 2011-2022 走看看