• 琐碎的容易忽视的知识


    Array.of

    当我们使用new Array声明数组的时候 如果传入一个值 表示数组的长度 但是会用empty占位

    console.log(new Array(3));
    
    
    • 1
    • 2

    在这里插入图片描述

    console.log(new Array(3, 4));
    
    • 1

    在这里插入图片描述

    此时我们就可以使用Array.of解决这个问题 其中传值就是数组中的每个值

    console.log(Array.of(3));
    
    • 1

    在这里插入图片描述

    console.log(Array.of(3, 4));
    
    • 1

    在这里插入图片描述

    Array.from

    类数组或部署了iterator接口的对象转换为数组

    var obj = {
      start: [1, 2, 3, 4],
      end: [5, 6, 7, 8],
      [Symbol.iterator]() {
        let index = 0,
          arr = [...this.start, ...this.end],
          length = arr.length;
        return {
          next() {
            if (index < length) {
              return {
                value: arr[index++],
                done: false,
              };
            } else {
              return {
                value: undefined,
                done: true,
              };
            }
          },
        };
      },
    };
    console.log(Array.from(obj));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    在这里插入图片描述

    对象上的keys values entries 与 数组上的区别

    对象的keys values entries 返回的都是数组 并且有length属性 不仅可以for of 迭代 也可以for循环

    console.log(Array.of(3, 4));
    var obj = {
      a: 1,
      b: 2,
      c: 3,
    };
    console.log(Object.keys(obj));
    console.log(Object.values(obj));
    console.log(Object.entries(obj));
    
    for (let i of Object.keys(obj)) {
      console.log(i);
    }
    for (let i = 0; i < Object.keys(obj).length; i++) {
      console.log(Object.keys(obj)[i]);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述
    数组上的放回的是迭代器函数 没有length属性 只能for of 迭代 不能for循环遍历

    var arr = [1, 2, 3];
    console.log(arr.keys());
    console.log(arr.values());
    console.log(arr.entries());
    
    for (let i of arr.keys()) {
      console.log(i);
    }
    for (let i = 0; i < arr.keys().length; i++) {
      console.log(arr.keys()[i]);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    杂谈

    我们先来看下Number构造器

    console.log(Number.prototype);
    
    • 1

    在这里插入图片描述

    indexOf有一个缺点就是找不到NaN

    console.log([NaN].indexOf(NaN));
    
    • 1

    在这里插入图片描述
    我们可以使用findIndex解决这个问题

    console.log([NaN].findIndex((y) => Object.is(NaN, y)));
    
    • 1

    在这里插入图片描述
    十进制转换为二进制

    console.log(Number.prototype.toString.call(200, 2));
    
    • 1

    在这里插入图片描述
    二进制转换为10进制

    console.log(parseInt(11001000, 2));
    
    • 1

    在这里插入图片描述
    0x开头表示16进制
    0b开头表示2进制
    0o开头表示8进制
    全局的isNaN与挂载到Number上的isNaN的区别
    全局的isNaN会隐式转换 Number上的不会隐式类型转换

    console.log(isNaN('NaN'));
    console.log(Number.isNaN('NaN'));
    
    • 1
    • 2

    在这里插入图片描述
    对于全局的isFinite与Number上的isFinite的区别
    全局的isNaN会隐式转换 Number上的不会隐式类型转换

    console.log(isFinite('42'));
    console.log(Number.isFinite('42'));
    
    • 1
    • 2

    在这里插入图片描述

    console.log(Number.isInteger(24));
    console.log(Number.isInteger(24.0));
    
    • 1
    • 2

    在这里插入图片描述

    安全整数

    最大安全整数

    console.log(Number.MAX_SAFE_INTEGER);
    console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1);
    
    • 1
    • 2

    在这里插入图片描述
    最小安全整数

    console.log(Number.MIN_SAFE_INTEGER);
    console.log(Number.MIN_SAFE_INTEGER === -Math.pow(2, 53) + 1);
    
    • 1
    • 2

    在这里插入图片描述
    isSafeInteger 判断是否是安全整数

    console.log(Number.isSafeInteger(1, 1));
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    Unity自定义Timeline总结
    数据可视化实战:如何给毛*易的歌曲做词云展示?
    【Vue】Pinia管理用户数据
    【SpringBoot】Spring常用注解总结
    设计模式------工厂模式的学习
    基于SSM的婚恋网站的设计与实现
    【Python入门】文件内容操作
    108.网络安全渗透测试—[权限提升篇6]—[Windows内核溢出提权]
    测试零基础如何进入大厂?一场面试教会你(附面试题解析)
    Alexon:在云原生环境中快速部署应用服务
  • 原文地址:https://blog.csdn.net/weixin_65402230/article/details/127424870