当前位置: 首页 > article >正文

【JavaScript】零碎知识点汇总

1. Symbol

Symbol(符号)是一种原始数据类型,它用于创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题。例如:

const key = Symbol('key');
const obj = {
  [key]: 'value'
};
console.log(obj[key]); // 输出 'value'

2. BigInt

BigInt(大整数)是在 ECMAScript 2020 中引入的一种新的原始数据类型,它用于表示任意精度的整数。与 JavaScript 中的 Number 类型相比,BigInt 可以表示的整数范围更大,没有位数限制,可以安全地存储和操作大整数。BigInt 值以后缀 “n” 结尾。例如:

const bigIntValue = 1234567890123456789012345678901234567890n;
console.log(bigIntValue); // 输出 1234567890123456789012345678901234567890n

3. 统计字符串中字符的个数

// 常规写法:
let str = 'sfgsdfgsd'
let result = {}
for(let i = 0; i < str.length; i++) {
    if (result[str[i]]) {
        result[str[i]]++
    } else {
        result[str[i]] = 1
    }
}
console.log(result)
// 简洁写法:
let str = 'sfgsdfgsd'
let result = str.split('').reduce((a,b)=>(a[b]++ || (a[b]=1),a),{})
console.log(result)

4. 如何更好地二次封装 localStorage?

  1. key 的命名
    同域名下 localStorage 可以进行共享,因此可能造成同域名下两个子项目的数据互相污染,所以可以给 key 加一个前缀或者后缀。
  2. 时效性
    存储的时候加一个时间戳,等到取数据的时候本地系统时间戳和存储时的时间戳进行对比,确保数据未失效。
  3. 将信息加密
    存储数据不希望被用户看到,可以将信息加密,取数据的时候需要解密。
  4. 存储大小
    localStorage 只有 5M ,可以使用 indexedDB 这种本地存储方式进行存储;或者可以安装 sunshine-storage 等 npm 库进行处理。
  5. 兼容服务端渲染
    声明一个对象去检测,模拟 localStorage。
  6. 版本迭代容错
    key 的命名上加上版本号,方便版本迭代处理数据。

5. 使用 Set 求数组的并集、交集和差集

const arr1 = [33, 22, 55, 33, 11, 66]
const arr2 = [22, 55, 44, 88, 88, 99]
// 以下都去重
// 并集
const union = [...new Set([...arr1, ...arr2])]
console.log(union)
// 交集
const cross = [...new Set(arr1)].filter(item => arr2.includes(item))
console.log(cross)
// 差集
const diff = union.filter(item => !cross.includes(item))
console.log(diff)

http://www.kler.cn/a/106661.html

相关文章:

  • vue 获取摄像头拍照,并旋转、裁剪生成新的图片
  • AR眼镜方案_AR智能眼镜阵列/衍射光波导显示方案
  • AdaBoost 二分类问题
  • Android CCodec Codec2 (二一)InputBuffers
  • ‘视’不可挡:OAK相机助力无人机智控飞行!
  • UNIX网络编程-TCP套接字编程(实战)
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于 CAN 总线的车辆数据采集与远程监控系统研发(下)
  • 【数据结构】模拟实现栈和队列
  • 计算机网络相关硬件介绍
  • Flutter extended_image库设置内存缓存区大小与缓存图片数
  • input实现手机验证码输入
  • 代码随想录算法训练营第3天| 203.移除链表元素 、 707.设计链表 、 206.反转链表
  • sqoop连接MYSQL报错处理
  • 基于PyTorch的MNIST手写体分类实战
  • Mac版好用的Git客户端 Fork 免激活
  • c# 操作word中的表格 批量复制和批量插入
  • 修改svc的LoadBalancer的IP引发的惨案
  • Nacos的安装和实操
  • 2023NOIP A层联测19-多边形
  • 基于nodejs+vue人脸识别考勤管理系统的设计与实现
  • 正点原子嵌入式linux驱动开发——Linux LCD驱动
  • day06-Flex布局
  • 微信小程序input输入字母自动转大写不生效问题解决
  • 一文搞懂 MineCraft 服务器启动操作和常见问题 2023年10月
  • CentOS卸载LVM磁盘的方法
  • centos格式化硬盘/u盘的分区为NTFS格式