Login
芋圆社区 > 编程 > JavaScript > 一些常用的方法【持续更新】

一些常用的方法【持续更新】

664
0
2022-12-22
2023-06-17
Hey、小怪兽


目录


  • 1.  对象数组分开提取数组
  • 2.  获取数组中每个对象出现的次数转为Map返回
  • 3.  b kb mb gb tb转换方法
  • 4.  数组元素置顶移动
  • 5.  判断一个数组是否包含另一个数组
  • ......

对象数组分开提取数组


  • /**
     * 对象数组分开提取数组
     * 例:arr = [                                 arr = {
     *   {name:'小A',age:15,value:1000},             name: ['小A','小B','小C'],
     *   {name:'小B',age:21,value:2000},    ===>     age: [15,21,35],
     *   {name:'小C',age:35,value:3000}              value: [1000,2000,3000]
     * ]                                          }
     */
    
    const arraySeparateOut = (arr) => {
      if (!arr.length) {
        return [];
      }
      const res = {};
      const keys = Object.keys(arr[0]);
      keys.map((key) => {
        arr.map((el) => {
          if (res.hasOwnProperty(key)) {
            res[key].push(el[key]);
          } else {
            res[key] = [el[key]];
          }
        });
      });
      return res;
    };

获取数组中每个对象出现次数


  • /**
     * 获取数组中每个对象出现的次数转为Map返回
     * 例:arr = [1,2,2,3,3,'c','c','c']   ===>  Map() { 1=>1,2=>2,3=>2,'c'=>3 }
     */
    
    const arrayGetItemNum = (arr) => {
      let mapObj = new Map();
      arr.map((el) => {
        let num = mapObj.get(el);
        if (num) {
          mapObj.set(el, ++num);
        } else {
          mapObj.set(el, 1);
        }
      });
      return mapObj;
    };

b kb gb 转换


  • /**
     * b kb mb gb tb转换方法
     * 参数介绍
     *    value       值
     *    curUnit     当前单位,假如传了1说明当前单位是KB的值,我会先*1024
     *    unit        是否返回单位,默认传转换后的单位,true:10 KB|false:10
     *    decimals    小数点保留几位,默认保留2位
     */
    
    const formatBytes = (value, curUnit = 0, unit = true, decimals = 2) => {
      if (unit) {
        if (parseFloat(value) === 0) return '0 B';
      } else {
        if (parseFloat(value) === 0) return '0';
      }
    
      const k = 1024;
      const dm = decimals < 0 ? 0 : decimals;
      const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
    
      curUnit > 0 ? (value = value * 1024 * curUnit) : null;
      const i = Math.floor(Math.log(value) / Math.log(k));
    
      return unit
        ? parseFloat((value / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]
        : parseFloat((value / Math.pow(k, i)).toFixed(dm));
    };

数组元素置顶移动


  • /**
     * 数组置顶移动 arr数组 index位置 many置顶数量|非必填,超过数组长度默认取取全部
     * arrayUnshift([1,2,3,4,5],3) ==> [4,5,1,2,3]
     * arrayUnshift([1,2,3,4,5],2,1) ==> [3,1,2,4,5]
     * arrayUnshift([1,2,3,4,5],2,0) ==> [1,2,3,4,5] 0的话没有元素置顶,就是原来的数组
     */
    
    function arrayUnshift(arr, index, many) {
      let _arr = JSON.parse(JSON.stringify(arr));
      const spl = _arr.splice(index, many ?? _arr.length - index);
    
      _arr.unshift(...spl);
      return _arr;
    }

判断一个数组是否包含另一个数组


  • /**
     * 判断一个数组是否包含另一个数组
     * 如果arr1包含arr2的所有元素,返回2
     * 如果arr1包含arr2的部分元素,返回1
     * 如果arr1不包含arr2的任何元素,返回0
     */
    const arrayCheckContain = (arr1, arr2) => {
      const existArr = arr1.filter(item => arr2.includes(item));
      const notExistArr = arr1.filter(item => !arr2.includes(item));
      if (existArr.length === arr1.length) {
        return 2;
      } else if (existArr.length > 0) {
        return 1;
      } else {
        return 0;
      }
    }

上一篇:WebAssembly简单案例

下一篇:AES加密 CBC模式

Message Board
回复
回复内容不允许为空
留言字数要大于2,小于200!
提交成功,5s后刷新页面!
编程导航

Array 基础方法

Array 进阶方法 - ES6

公主连结.cysp转.skel

获取视频的第一帧

定制Console.log

WebAssembly简单案例

一些常用的方法【持续更新】

AES加密 CBC模式

滚动条滚动到底部的判断

console.log展开值不一样

JSON解析与序列化

|| 运算符的坑

对象转为字符串

call,apply,bind

获取数组中对象的某一属性值

jQuery合并ajax请求

批量命名全局变量

forEach方法

round,ceil,floor

Copyright © 2020 芋圆社区

Powered by 浙ICP备2020039309号-1

此页面不支持夜间模式!

已进入夜间模式!

已进入普通模式!

搜索框不允许为空

签到成功!经验+5!芋圆币+2!

签到失败!今日已签到!

需要登录社区账号才可以进入!

复制成功
寄,页面未加载完成或页面无锚点