zoukankan      html  css  js  c++  java
  • 本周学习总结(原生)

    toLocaleString

    在特定的环境语言环境下的表示字符串
    let numbers=3500
    number.toLocaleString() //3,500
    console.log(numbers.toLocaleString('en-US')) //3,500
    

    RGBToHex

    const RGBToHex=(r,g,b)=>((r<<16)+(g<<8)+b).toString(16).padStart(6,'0')
    console.log(RGBToHex(255, 165, 1)) //ffa501
    

    地图切换数据,遇到清除不了原数据的问题

     myChart.dispose();
    //删除dom实例,然后重新绑定dom,然后再赋值新数据
    myChart = echarts4.init(document.getElementById('yl-echarts'));
    myChart.setOption(vm.option);
    

    谷歌浏览器不能自动播放的问题

    打开  chrome://flags/#touch-events-api      设置为 auto
    

    位运算

    判断一个整数 x 的奇偶性:x & 1 = 1 (奇数) , x & 1 = 0 (偶数)
    
    求一个浮点数 x 的整数部分:~~x,对于正数相当于 floor(x) 对于负数相当于 ceil(-x)
    
    计算 2 ^ n:1 << n 相当于 pow(2, n)
    
    计算一个数 x 除以 2 的 n 倍:x >> n 相当于 ~~(x / pow(2, n))
    
    判断一个数 x 是 2 的整数幂(即 x = 2 ^ n): x & (x - 1) = 0
    

    多个函数执行

    const pipeAsync = (...args) => arg => args.reduce((acc, val) => {
     return acc.then(val)
    }, Promise.resolve(arg))
    
    const sum = pipeAsync(
      x => x + 1,
      x => new Promise(resolve => setTimeout(() => resolve(x + 2), 1000)),
      x => x + 3,
      async x => (await x) + 4
    );
    (async ()=>{
      console.log(await sum(5))
    })()
    

    模板字符串

    const a = n => [...`${n}`]
    const b = n => [...String(n)];
    console.log(a('abc'))
    console.log(b('abc'))
    

    判断是不是undefined和null

    可以用来判断不等于undefined null
    const isNil = x => x == null;
    
    console.log(isNil(undefined)) //true
    console.log(isNil(null))  //true
    console.log(isNil(0)) //false
    console.log(isNil([])) //false
    

    动画开始停止

    animation-play-state:
    paused  //关
    running //开
    

    padStart

    '8'.padStart(2,'0') //
    //08
    
    const addLeadingZeros = (number, targetLength) => {
      let start = number < 0 ? '-' : '';
      return start + Math.abs(number).toString()
        .padStart( targetLength,'0')
    }
    

    Date 时间

    new Date()
    // 年  月  日 时  分 秒  毫秒
    new Date(2019,9,6,12,0,0,0)   //2019-10-06T04:00:00.000Z
    //总毫秒数
    new Date(1570334400000) //2019-10-06T04:00:00.000Z
    
    时间排序
    
    var result = [
      new Date(1995, 6, 2),
      new Date(1987, 1, 11),
      new Date(1989, 6, 10)
    ];
    result.sort((a,b)=>a.getTime()-b.getTime())
    console.log(result)
    

    递归优化

    动态规划是用已知项去更好的求解未知项

    将原问题拆解若干子问题,同时保存子问题的答案,使得每个子问题只求解一次,最终获得原问题的答案

    f(n)=f(n-1)+f(n-2)

    记忆化搜索递归(自顶向下)

    原来的递归
    let num = 0;    // 用来记录fib函数执行次数,执行一次加一
    function fib(n) {
        num ++;
        if(n === 0) {
            return 0;
        }
        if(n === 1) {
            return 1;
        }
        return fib(n-1) + fib(n-2);
    }
    
    console.log(fib(7))
    console.log(num)// 42
    
    let memory = Array.from({length: 100}, v => -1)
    const fib = n => {
        if (n == 0) {
            return 0
        }
        if (n == 1) {
            return 1
        }
        if (memory[n] == -1) {
            memory[n] = fib(n - 1) + fib(n - 2)
        }
        return memory[n]
    }
    console.log(fib(7)) //13   这个只有13次
    

    迭代法(自下向上)

    f(2)=f(1)+f(0), f(3)=f(2)+f(1)

    const fib = n => {
        let memory = new Array(n)
        memory[0] = 0
        memory[1] = 1
        let i = 2
        while (i <= n) {
            memory[i] = memory[i - 1] + memory[i - 2]
            i++
        }
        return memory[n]
    }
    console.log(fib(7)) //13
    

    CSS 技巧

    选择器
    nth-child   odd  even     n+6 从6开始后面的
    
    https://juejin.im/post/5d4d0ec651882549594e7293
    

    Date()

    console.log(new Date().toISOString().split('T')[0])
    // 2019-09-08
    console.log(new Date().toTimeString().slice(0,8))
    // 14:05:36
    

    reduce 解构

    console.log([{n: 4}, {n: 2}, {n: 8}, {n: 6}].reduce((acc, {n}) => acc + n, 0))
    // 20
    
    传入多个函数
    const compose=(...args)=>args.reduce((acc,val)=>arg=>acc(val(arg)))
    //从右到左
    let a=compose(
        val=>val+5,
        val=>val*4,
        val=>val+10
    )
    console.log(a(5))
    
    const composeRight=(...args)=>args.reduce((acc,val)=>arg=>val(acc(arg)))
    //从左到右
    let b=composeRight(
        val=>val+5,
        val=>val*4,
        val=>val+10
    )
    console.log(b(10))
    
  • 相关阅读:
    Linux 创建sftp用户并限制目录权限
    idea操作maven时控制台中文显示乱码/maven项目启动方式
    Docker 容器镜像删除
    Golang 在 Mac、Linux、Windows 下如何交叉编译
    Linux后台运行Jar方法
    MAC安装JDK及环境变量配置
    Docker 容器镜像删除
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
    《设计模式之禅》之状态模式
    《设计模式之禅》之访问者模式
  • 原文地址:https://www.cnblogs.com/fangdongdemao/p/11487440.html
Copyright © 2011-2022 走看看