Utils

2023-05-16

平级数组转为树状

const dataTree = [
        {id: 1, name: '总公司', parentId: 0},
        {id: 2, name: '深圳分公司', parentId: 1},
        {id: 3, name: '北京分公司', parentId: 1},
       {id: 4, name: '研发部门', parentId: 2},
        {id: 5, name: '市场部门', parentId: 2},
        {id: 6, name: '测试部门', parentId: 2},
        {id: 7, name: '财务部门', parentId: 2},
        {id: 8, name: '运维部门', parentId: 2},
        {id: 9, name: '市场部门', parentId: 3},
        {id: 10, name: '财务部门', parentId: 3},
       
    ]
    function changeData(data, parentId = 0) {
        let tree = [];//新建空数组
        //遍历每条数据
        data.map((item) => {
            //每条数据中的和parentId和传入的相同
            if (item.parentId == parentId) {
                //就去找这个元素的子集去  找到元素中parentId==item.id 这样层层递归
                item.children = changeData(data, item.id);
                tree.push(item);
            }
        })
        return tree
    }
    console.log(changeData(dataTree, 0));

树状转为数组

    //树级结构转平级
    treeToList(tree) {
      let arrs = [];
      let result = [];
      arrs = arrs.concat(tree);
      // 把数组中每一项全部拉平
      while (arrs.length) {
        let first = arrs.shift(); // 弹出第一个元素
        // 直到每一项数据都没有children
        if (first.$children) {
          //如果有children
          arrs = arrs.concat(first.$children);
          delete first['$children'];
        }
        result.push(first);
      }
      return result;
    },

Day.js

一个极简的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持一样, 但体积仅有2KB。

npm install dayjs

import dayjs from 'dayjs'
 
dayjs().format('YYYY-MM-DD HH:mm') // => 2022-01-03 15:06
dayjs('2022-1-3 15:06').toDate() // => Mon Jan 03 2022 15:06:00 GMT+0800 (中国标准时间)

qs

一个轻量的 url 参数转换的 JavaScript 库

npm install qs
import s from 'qs'
 
qs.parse('user=tom&age=22') // => { user: "tom", age: "22" }
qs.stringify({ user: "tom", age: "22" }) // => user=tom&age=22

js-cookie

一个简单的、轻量的处理 cookies 的 js API

npm install js-cookie
import Cookies from 'js-cookie'
 
Cookies.set('name', 'value', { expires: 7 }) // 有效期7天
Cookies.get('name') // => 'value'

flv.js

bilibili 开源的 html5 flash 视频播放器,使浏览器在不借助 flash 插件的情况下可以播放 flv,目前主流的直播、点播解决方案。

npm install flv.js
<video autoplay controls width="100%" height="500" id="myVideo"></video>
 
import flvjs from 'flv.js'
 
// 页面渲染完成后执行
if (flvjs.isSupported()) {
  var myVideo = document.getElementById('myVideo')
  var flvPlayer = flvjs.createPlayer({
    type: 'flv',
    url: 'http://localhost:8080/test.flv' // 视频 url 地址
  })
  flvPlayer.attachMediaElement(myVideo)
  flvPlayer.load()
  flvPlayer.play()
}

vConsole

一个轻量、可拓展、针对手机网页的前端开发者调试面板。如果你还苦于在手机上如何调试代码,用它就对了。

npm install vconsole
import VConsole from 'vconsole'
 
const vConsole = new VConsole()
console.log('Hello world')

Animate.css

一个跨浏览器的 css3 动画库,内置了很多典型的 css3 动画,兼容性好,使用方便。

npm install animate.css
<h1 class="animate__animated animate__bounce">An animated element</h1>
 
import 'animate.css'

animejs

一款功能强大的 Javascript 动画库。可以与CSS3属性、SVG、DOM元素、JS对象一起工作,制作出各种高性能、平滑过渡的动画效果。

npm install animejs
<div class="ball" style="width: 50px; height: 50px; background: blue"></div>
 
import anime from 'animejs/lib/anime.es.js'
 
// 页面渲染完成之后执行
anime({
  targets: '.ball',
  translateX: 250,
  rotate: '1turn',
  backgroundColor: '#F00',
  duration: 800
})

lodash.js

一个一致性、模块化、高性能的 JavaScript 实用工具库

npm install lodash
import _ from 'lodash'
 
_.max([4, 2, 8, 6]) // 返回数组中的最大值 => 8
_.intersection([1, 2, 3], [2, 3, 4]) // 返回多个数组的交集 => [2, 3]

优雅​​​​​​​随机字符串

Math.random().toString(16).substring(2)
//3324f982047b

打乱数组
 

const list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
list.sort(() => {
return Math.random() - 0.5;
});
// 输出
(9) [2, 5, 1, 6, 9, 8, 4, 3, 7]
// Call it again
(9) [4, 1, 7, 5, 3, 8, 2, 9, 6]

将Object属性转成属性数组
​​​​​​​

const obj = { a: 1, b: 2, c: 3 };
Object.entries(obj);
// 输出
(3) [Array(2), Array(2), Array(2)]
0: (2) ["a", 1]
1: (2) ["b", 2]
2: (2) ["c", 3]
length: 3
Object.keys(obj);
(3) ["a", "b", "c"]
Object.values(obj);
(3) [1, 2, 3]

对象深拷贝

 function clone(obj) {
      var newObj = {}
      for (var key in obj) {
        if (typeof obj[key] === 'object') {
          newObj[key]=  clone(obj[key])
        } else {
          newObj[key] = obj[key]
        }
      }
      return newObj
    }

字符串加空格

'你好 \xa0 \xa0 !'

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Utils 的相关文章

  • [网络工程师]-路由配置-BGP配置

    组建BGP网络是为了实现网络中不同AS之间的通信 配置BGP基本功能是组建BGP网络的最基本要求 xff0c 主要包括一下三部分 xff1a xff08 1 xff09 启动BGP进程 xff1a 只有先启动BGP进程 xff0c 才能开始
  • Linux--bash、fork、exec、进程替换相关命令

    目录 1 bash 2 fork 43 exec 例1 xff1a 3 fork 43 exec 例子2 1 bash linux bash是一个命令处理器 xff0c 通常运行于文本窗口中 xff0c 并能执行用户直接输入的命令 xff1
  • js,定时器,计时器

    let a 61 settimeout 61 gt console log 1 1000 1 xff0c 返回值是一个number标识 2 xff0c cleartimeout xff0c 和clearintenval都可以消除settim
  • commonjs模块和es6模块的区别

    es6模块在浏览器端和服务器端都可用 xff0c commonjs只适用于服务端 1 xff0c es6是编译时输出接口 xff08 接口在代码在解析阶段就已经生成 xff09 xff0c commonjs是运行时加载 xff0c 在脚本完
  • uboot的命令体系-2.8.uboot源码分析4-朱有鹏-专题视频课程

    uboot的命令体系 2 8 uboot源码分析4 3793人已学习 课程介绍 本课程为uboot学习的第8部分 xff0c 主要讲解uboot的命令体系 分析了uboot的命令定义和实现的方法 xff0c 教大家自己向uboot中添加自定

随机推荐

  • 浪潮服务器忘记管理口地址,远程配置raid,远程安装系统。

    如果浪潮服务器忘记了管理口地址 xff0c 可以通过设置临时IP地址进行服务器管理 xff08 必须保证服务器之前IPV4的获取方式为DHCP xff09 使用工具 xff1a tftpd32 xff08 网上可直接搜索下载 xff09 x
  • linux命令行——linux快速搜索历史命令

    一 需求描述 在执行命令时 xff0c 对于已经输入的历史命令 xff0c 可以通过关上下键进行翻找 xff0c 如果是最近几条 xff0c 很容易找到 xff0c 如果是很久之前的命令 xff0c 依旧使用上下键查找就会力不从心 二 解决
  • 如何用六步教会你使用python爬虫爬取数据

    前言 xff1a 用python的爬虫爬取数据真的很简单 xff0c 只要掌握这六步就好 xff0c 也不复杂 以前还以为爬虫很难 xff0c 结果一上手 xff0c 从初学到把东西爬下来 xff0c 一个小时都不到就解决了 python爬
  • react实现点击复制

    1 使用浏览器提供的document execCommand 39 copy 39 2 使用copy to clipboard库 document execCommand 34 copy 34 1 document execCommand封
  • zustand

    最近工作中需要用到zustand xff0c 先记录一下学到的demo 安装 xff1a npm install zustand 公共文件store引入 import create from 39 zustand 39 const useS
  • antd获取表单的所有数据

    当我们使用antd的组件的form 表单时 xff0c 数据一般在form中的onFinish 61 onFinish 方法上可以拿到 const Demo 61 61 gt const onFinish 61 values any 61
  • antd使用阿里巴巴矢量图标

    最近需要在antd引入中阿里矢量图标 xff0c 看到几个关于antd使用iconfont的回答 xff0c 其中关于Icon的引入 xff0c 都是写的从antd引入 xff08 不可用 xff09 旧版本 xff1a import Ic
  • antd表单赋值,回显表格数据

    使用 antd 做表格回显数据时 xff0c 会看到文档有写 xff1a 所以我们可以 1 定义hooks const form 61 Form useForm 2 在触发事件中使用 xff0c 以打开模态框赋值为例 const showM
  • react反向代理配置

    官网 xff1a https create react app dev docs proxying api requests in development 安装 npm install http proxy middleware save
  • js立即执行函数写法

    优点 xff1a 1 立即执行 xff0c 不用担心临时变量污染全局变量 xff0c 减少命名 2 方便封装 写法 xff1a function name params console log params 打印 1 1 function
  • uboot的环境变量-2.9.uboot源码分析5-朱有鹏-专题视频课程

    uboot的环境变量 2 9 uboot源码分析5 3347人已学习 课程介绍 本课程为uboot学习的第9部分 xff0c 主要讲解uboot的环境变量的实现原理和环境变量在内存中 SD卡中的存储方法 结合环境变量相关的几个命令的代码分析
  • 输出什么呢?

    let normaLize 61 function params let arr 61 params split g filter v 61 gt v let result 61 let obj 61 result while key 61
  • Pormise

    Promise是一个构造函数 三种状态 xff1a pending xff08 进行中 xff09 fulfilled xff08 已成功 xff09 和rejected xff08 已失败 xff09 xff0c fulfilled和re
  • js删除对象的某个属性

    第一种 xff1a delete const obj 61 name 39 章三 39 age 18 删除age这个属性 delete obj age console log obj name 39 章三 39 第二种 xff08 ES6
  • moment时区转换

    moment js 时区转换 根据本地时区 moment 34 2022 05 31T16 00 00 000Z 34 format 39 YYYY MM DD 39 39 2022 06 01 39
  • TypeScript

    安装 npm install g typescript 安装完成后 xff0c 在控制台运行如下命令 xff0c 检查安装是否成功 3 x xff1a tsc V vscode自动编译 1 生成配置文件tsconfig json tsc i
  • 数组中第一个不重复的值

    var firstUniqChar 61 function s const arr 61 countBy s for const i k of Array from s entries if arr k 61 61 61 1 return
  • JS中数组转字符串,字符串转数组方法合集

    一 字符串转数组 xff1a 1 Array split const str 61 39 hello 39 str split 39 39 39 h 39 39 e 39 39 l 39 39 l 39 39 o 39 const str2
  • React和Vue 父组件调用子组件的方法

    react 父组件 xff1a 使用createRef和useRef都可以 import useRef from 39 react 39 let ChildRef 61 useRef function handleOnClick Child
  • Utils

    平级数组转为树状 const dataTree 61 id 1 name 39 总公司 39 parentId 0 id 2 name 39 深圳分公司 39 parentId 1 id 3 name 39 北京分公司 39 parentI