二次封装 typeof
function myTypeof(target) { const type = typeof target if(type === 'object') { if(type === null) { return 'null' } if(Array.isArray(target))…
自定义 hook - useLocalStorage
function useLocalStorage(key, initialValue) { const [value, setValue] = useState(() => { const storedValue = localStorage.getItem(key) ret…
用代码实现把字符串转换成 base64 编码
1. btoa btoa(unescape(encodeURIComponent(this.inText))) 2. 手动实现 function stringToBase64(str) { // 将字符串转换为二进制数组 let binaryArr…
JavaScript 数组去重
function unique(arr) { return [...new Set(arr)] } function unique(arr) { let res = [] arr.forEach(item => { if (!res.includes(item)) { res…
JavaScript 偏函数
偏函数是指对一个函数的某些参数进行固定,形成一个新的函数,常见的 bind ,就可以实现函数的偏函数 const log = console.log.bind(console,1) funct…
调用计数器(支持重置)
class Count { constructor() { this.value = 0 } add() { this.value++ return this.value } reset() { this.value = 0 return this.value } }…
JavaScript 实现 Awaited
Awaited 的作用就是将 Promise 中的值取出来 type MyAwaited<T extends Promise<unknown>> = T extends Promise<infer K> ? K extends Pr…
解析 URL Params 为对象
支持对象和数组 function parseParams(url) { let params = {} let queryString = url.split("?")[1] if (queryString) { queryString = queryString.…
输入 50a6we8y20x 输出 50个a、6个we、8个y、20个x
实际上这个算法是个压缩算法的反操作,压缩算法可查看前面发布的文章。 // 输入50a6we8y20x 输出50个a,6个we,8个y,20个x function unzipString(str…
多种方法创建10个包含1的数组
也是创建数组的多种方法 const arr1 = [1,1,1,1,1,1,1,1,1,1] const arr2 = new Array(10).fill(1) const arr3 = '1'.repeat(10).split('').map(item …