You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functionisObject(value){vartype=typeofvaluereturnvalue!=null&&(type=='object'||type=='function')}/** * form vue * Check if two values are loosely equal - that is, * if they are plain objects, do they have the same shape? */functionlooseEqual(a,b){if(a===b)returntrueconstisObjectA=isObject(a)constisObjectB=isObject(b)if(isObjectA&&isObjectB){try{constisArrayA=Array.isArray(a)constisArrayB=Array.isArray(b)if(isArrayA&&isArrayB){return(a.length===b.length&&a.every((e,i)=>{returnlooseEqual(e,b[i])}))}elseif(ainstanceofDate&&binstanceofDate){returna.getTime()===b.getTime()}elseif(!isArrayA&&!isArrayB){constkeysA=Object.keys(a)constkeysB=Object.keys(b)return(keysA.length===keysB.length&&keysA.every(key=>{returnlooseEqual(a[key],b[key])}))}else{returnfalse}}catch(e){returnfalse}}elseif(!isObjectA&&!isObjectB){returnString(a)===String(b)}else{returnfalse}}
consttpl="Hei, my name is <% name%>, and I'm <%age%> years old."constrender=(tpl,context)=>tpl.replace(/<%(.*?)%>/g,function(_,m){returndata[m.trim()]})console.log(render(tpl,{name: 'Rainbow',age: '20'}))
目录
JavaScript 必写
JavaScript 编码能力
.
来取对象的值JavaScript 必写
数组排序(多种方法)
数组去重(多种方法)
数组扁平化
ES6 增加了扩展运算符,用于取出参数对象的所有可遍历属性,拷贝到当前对象之中:
将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组
深拷贝
用 JSON,存在如下缺点:
基础版(新增函数函数类型支持),推荐使用 lodash 的深拷贝函数。
递归完整版本
要点:
函数防抖节流
防抖与节流函数是一种最常用的 高频触发优化方式,能对性能有较大的帮助。
实现函数原型方法 call apply bind
实现数组原型方法 forEach map filter some reduce
实现 Promise
实现 Promise.all
实现 Promise.allSettled
如果任意的 promise reject,则 Promise.all 整个将会 reject。当我们需要 所有 结果都成功时,它对这种“全有或全无”的情况很有用:Promise.allSettled 等待所有的 promise 都被 settle,无论结果如何。结果数组具有:
封装事件类 EventEmitter(发布订阅模式)
JavaScript 编码能力
函数柯里化
函数记忆
函数组合
对象比较
计算字符串中出现最多的字母与出现次数
实现一个 trim 方法
js 实现一个函数 获得 url 参数的值
http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&d&enabled
解析为如下格式:驼峰转下划线:appleOrangePinkBoy => apple_orange_pink_boy
实现一个 get 方法通过
.
来取对象的值封装一下 axios 或者手写封装 ajax
实现一个 once 函数,传入函数参数只执行一次
实现一个简单的模板字符串替换
合并对象 merge
求多个数组之间的交集
实现一个版本比较方法 compareVersion
参考链接
The text was updated successfully, but these errors were encountered: