首页 > 其他分享 >项目中常用方法总结

项目中常用方法总结

时间:2023-03-21 11:45:19浏览次数:34  
标签:总结 常用 return 数组 arr key obj 方法 const

常用时间方法

// 将时间格式转为时间戳
    formatTime(time) {
      return new Date(time).getTime();
    },
    // 将时间戳转为年月日
    formatYear(time) {
      const date = new Date(time);
      const year = date.getFullYear();
      const month = date.getMonth() + 1;
      const day = date.getDate();
      return `${year}-${month}-${day}`;
    },
    // 将时间戳转为年月日时分秒
    formatDateTime(time) {
      const date = new Date(time);
      const year = date.getFullYear();
      const month = date.getMonth() + 1;
      const day = date.getDate();
      const hour = date.getHours();
      const minute = date.getMinutes();
      const second = date.getSeconds();
      return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
    }

常用数组方法

// 判断是否是数组且不为空
    isNotEmptyArray(arr) {
      return Array.isArray(arr) && arr.length > 0;
    },
    isArray(arr) {
      return Array.isArray(arr);
    },
    // 数组深拷贝
    deepCopy(arr) {
      return JSON.parse(JSON.stringify(arr));
    },
    // 数组中删除指定下标的元素
    remove(arr, index) {
      return arr.splice(index, 1);
    },
    // 数组中截取指定位置开始下标和结束下标的元素且不影响原数组
    slice(arr, start, end) {
      return arr.slice(start, end);
    },
    // 数组去重
    unique(arr) {
      return Array.from(new Set(arr));
    },
    // 数组求和
    sum(arr) {
      return arr.reduce((prev, next) => prev + next);
    },
    // 数组中对象的某一属性求和
    sumBy(arr, key) {
      return arr.reduce((prev, next) => prev + next[key], 0);
    },
    // 数组求平均值
    average(arr) {
      return this.sum(arr) / arr.length;
    },
    // 数组最大值
    max(arr) {
      return Math.max(...arr);
    },
    // 数组最小值
    min(arr) {
      return Math.min(...arr);
    },
    // 数组排序
    sort(arr) {
      return arr.sort((a, b) => a - b);
    },
    // 数组乱序
    shuffle(arr) {
      return arr.sort(() => Math.random() - 0.5);
    },
    // 数组分组
    group(arr, size) {
      const result = [];
      for (let i = 0; i < arr.length; i += size) {
        result.push(arr.slice(i, i + size));
      }
      return result;
    },
    // 数组扁平化
    // 数组扁平化的意思就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。
    flatten(arr) {
      return arr.reduce((prev, next) => prev.concat(Array.isArray(next) ? this.flatten(next) : next), []);
    },
    // 数组差集
    difference(arr1, arr2) {
      return arr1.filter(v => !arr2.includes(v));
    },
    // 数组交集
    intersection(arr1, arr2) {
      return arr1.filter(v => arr2.includes(v));
    },
    // 数组并集
    union(arr1, arr2) {
      return [...new Set([...arr1, ...arr2])];
    },
    // 数组对象去重
    uniqueObject(arr, key) {
      return [...new Map(arr.map(item => [item[key], item])).values()];
    },
    // 数组对象排序
    sortObject(arr, key) {
      return arr.sort((a, b) => a[key] - b[key]);
    },
    // 数组对象求和
    sumObject(arr, key) {
      return arr.reduce((prev, next) => prev + next[key], 0);
    },
    // 数组对象求平均值
    averageObject(arr, key) {
      return this.sumObject(arr, key) / arr.length;
    },
    // 数组对象最大值
    maxObject(arr, key) {
      return Math.max(...arr.map(item => item[key]));
    },
    // 数组对象最小值
    minObject(arr, key) {
      return Math.min(...arr.map(item => item[key]));
    },
    // 数组对象分组
    groupObject(arr, key) {
      return arr.reduce((prev, next) => {
        (prev[next[key]] ? prev[next[key]] : prev[next[key]] = []).push(next);
        return prev;
      }, {});
    },
    // 数组对象扁平化
    flattenObject(arr, key) {
      return arr.reduce((prev, next) => prev.concat(next[key]), []);
    },
    // 数组对象差集
    differenceObject(arr1, arr2, key) {
      return arr1.filter(v => !arr2.some(item => item[key] === v[key]));
    },
    // 数组对象交集
    intersectionObject(arr1, arr2, key) {
      return arr1.filter(v => arr2.some(item => item[key] === v[key]));
    },
    // 数组对象并集
    unionObject(arr1, arr2, key) {
      return [...new Set([...arr1, ...arr2])];
    }

常用对象方法

// 判断是否是对象且不为空
    isNotEmptyObject(obj) {
      return Object.prototype.toString.call(obj) === '[object Object]' && Object.keys(obj).length > 0;
    },
    // 对象深拷贝
    deepClone(obj) {
      return JSON.parse(JSON.stringify(obj));
    },
    // 判断是否是对象
    isObject(obj) {
      return Object.prototype.toString.call(obj) === '[object Object]';
    },
    // 对象转数组
    objectToArray(obj) {
      return Object.keys(obj).map(key => obj[key]);
    },
    // 对象key排序
    objectKeySort(obj) {
      return Object.keys(obj).sort().reduce((prev, next) => {
        prev[next] = obj[next];
        return prev;
      }, {});
    },
    // 对象转查询字符串
    objectToQueryString(obj) {
      return Object.keys(obj).map(key => `${key}=${obj[key]}`).join('&');
    },
    // 对象深拷贝
    deepClone(obj) {
      return JSON.parse(JSON.stringify(obj));
    },
    // 对象合并
    mergeObject(obj1, obj2) {
      return Object.assign(obj1, obj2);
    },
    // 对象深合并
    deepMergeObject(obj1, obj2) {
      for (const key in obj2) {
        obj1[key] = obj1.hasOwnProperty(key) && obj1[key].toString() === '[object Object]' ? this.deepMergeObject(obj1[key], obj2[key]) : obj1[key] = obj2[key];
      }
      return obj1;
    },
    // 对象深比较 两个对象是否相等
    deepCompareObject(obj1, obj2) {
      if (obj1 === obj2) return true;
      if (obj1.length !== obj2.length) return false;
      for (const key in obj1) {
        if (!obj2.hasOwnProperty(key)) return false;
        if (obj1[key] !== obj2[key]) return false;
      }
      return true;
    },
    // 对象深查找 指定key的值
    deepFindObject(obj, key) {
      for (const k in obj) {
        if (k === key) return obj[k];
        if (obj[k] && typeof obj[k] === 'object') {
          const result = this.deepFindObject(obj[k], key);
          if (result) return result;
        }
      }
    },
    // 对象深查找并删除
    deepFindAndDeleteObject(obj, key) {
      for (const k in obj) {
        if (k === key) {
          delete obj[k];
          return true;
        }
        if (obj[k] && typeof obj[k] === 'object') {
          const result = this.deepFindAndDeleteObject(obj[k], key);
          if (result) return true;
        }
      }
    },
    // 对象深查找并修改
    deepFindAndModifyObject(obj, key, value) {
      for (const k in obj) {
        if (k === key) {
          obj[k] = value;
          return true;
        }
        if (obj[k] && typeof obj[k] === 'object') {
          const result = this.deepFindAndModifyObject(obj[k], key, value);
          if (result) return true;
        }
      }
    },
    // 对象深查找并添加
    deepFindAndAddObject(obj, key, value) {
      for (const k in obj) {
        if (k === key) {
          obj[k] = value;
          return true;
        }
        if (obj[k] && typeof obj[k] === 'object') {
          const result = this.deepFindAndAddObject(obj[k], key, value);
          if (result) return true;
        }
      }
    },
    // 对象深查找并替换
    deepFindAndReplaceObject(obj, key, value) {
      for (const k in obj) {
        if (k === key) {
          obj[k] = value;
          return true;
        }
        if (obj[k] && typeof obj[k] === 'object') {
          const result = this.deepFindAndReplaceObject(obj[k], key, value);
          if (result) return true;
        }
      }
    }

标签:总结,常用,return,数组,arr,key,obj,方法,const
From: https://www.cnblogs.com/zddbean/p/17239428.html

相关文章

  • 常用正则表达式
    from:cdoco/common-regex:常用正则表达式-收集一些在平时项目开发中经常用到的正则表达式。(github.com) 邮箱[email protected] 只允许英文字母、数字、下......
  • 使用spring的@Async异步执行方法
    应用场景:[color=red]1、某些耗时较长的而用户不需要等待该方法的处理结果2、某些耗时较长的方法,后面的程序不需要用到这个方法的处理结果时[/color][size=large][color=......
  • 【Unity3D】基于模板测试和顶点膨胀的描边方法
    1前言​选中物体描边特效中介绍了基于模板纹理模糊膨胀的描边方法,该方法实现了软描边,效果较好,但是为了得到模糊纹理,对屏幕像素进行了多次渲染,效率欠佳。本文将介绍......
  • ubuntu18.04 脚本自启动方法
    1,修改/lib/systemd/system中文件rc-local.service文章末位加入这三行数据[Install]WantedBy=multi-user.targetAlias=rc-local.service 2,编辑/etc/rc.local添加需要......
  • XHR属性以及方法和事件
    XHR属性1.responseType和response(IE10才开始支持)当responseType没有设置或者’’或’text’时使用ResponseText/response都可以获取文本形式的响应内容;当re......
  • orcad 快速差走器件的两种方法
    第一种方法:适用于整个原理图操作    第二种方法:使用与某张原理图操作     ......
  • BUAA_2023_os_lab1上机总结
    依旧是两道题,exam+extraexam实现一个自定义的格式化字符串'%R',他的格式和%d完全相同,但是输出的值不同,具体地可以说:printf("%...R",a,b);等价于:printf("(%...d,%.........
  • javascript 给Object扩展extend方法
    javascript给Object扩展extend方法mdj280759843于2011-04-1213:16:46发布1006收藏分类专栏:JS文章标签:JavaScriptjQueryUIprototype框架ViewUI版权JS专栏......
  • 前端优化总结
    基本规则css放到中js放到底部前面内联加载快外置可以被复用,可以被缓存浏览器并发数BrowserHTTP1.0HTTP1.1IE6,724IE866Firebox66Safari44Chrome66Opera44图片css雪碧图优......
  • jQuery.extend()方法
    jQuery.extend()方法jQuery杂项方法实例遍历数组元素,并修改第一个对象<divid="log"></div><script>$(function(){varobject1={apple:0,banana:{weigh......