lvzhiyi

Results 5 comments of lvzhiyi

上面大部分答案是splice截取再添加,我这里提供另外一种算法: - 只是将原数组index移动key个位置即可,超出数组长度,依次添加在数组头部,相当于固定位数的链表循环 ``` function transformArr(arr, key){ let resArr = []; arr.forEach((item, i) => { resArr[i] = i - key >= 0 ? arr[i - key] : arr[arr.length - key...

以上大部分是以事件队列的算法实现,我这里提供发布订阅的一种算法,供大家参考: ``` class Event { maps = {}; fire(type) { const stack = this.maps[type] || []; stack.every(listener => listener()); } listen(type, listener) { if (!this.maps.hasOwnProperty(type)) { this.maps[type] = []; }...

你们的太复杂了:关键点是元素除以10的取整数作为新数组的index就OK了: ``` function transformArr(arr){ let resArr = []; arr.forEach((item, index) => { let key = parseInt(item / 10); if( Array.isArray(resArr[key])){ if(!resArr[key].includes(item)){ resArr[key].push(item) } }else{ resArr[key] = [item] } }) return...

undefined 10 20 **涉及知识点有:** 1、自执行函数会形成块级作用域 2、作用域链是自内向外查找 3、作用域形成与js引擎编译阶段,并不会做负值操作 4、var声明的全局变量会赋值给window对象 ### 第一 undefined 因为函数内部声明过a, 导致变量提升,但不负值,返回undefined。如果内部没有声明a 则作用域继续向外查找,找到a= 10: ``` var a = 10; (function () { console.log(a) // 10 })() ``` ### 第二...

题目是讨论两者的设计思想,我从共同点和区别方面大致说一下: ### 共同点 首先两者都是处理全局状态的工具库,大致实现思想都是:全局state保存状态---->dispatch(action) ------>reducer(vuex里的mutation)----> 生成newState; 整个状态为同步操作; ### 区别 最大的区别在于处理异步的不同,vuex里面多了一步commit操作,在action之后commit(mutation)之前处理异步,而redux里面则是通过中间件处理