摘要: 方法1 实现方法1的主要思想是利用键值对存储,我们可以分解为两个步骤。 定义一个对象,在遍历数组的时候,将数组元素作为对象的键,将出现的次数作为值获取键值对后进行遍历,获取值最大的那个元素,返回后即可得到结果。通过以上的思想,我们可以得到以下实现代码。 方法1 因为方法1会首先对数组进行遍历,然后对 阅读全文
posted @ 2019-03-31 13:33 短腿~欧尼 阅读(5049) 评论(0) 推荐(0) 编辑
摘要: 一、循环obj let testStr = 'asdasddsfdsfadsfdghdadsdfdgdasd'; function getMax(str) { let obj = {}; for(let i in str) { if(obj[str[i]]) { obj[str[i]]++; }el 阅读全文
posted @ 2019-03-31 13:32 短腿~欧尼 阅读(3392) 评论(0) 推荐(0) 编辑
摘要: 浅拷贝和深度克隆: 举例子来说明: 浅拷贝: var a=1; var b=a; a=2; console.log(b)//此处输出1 这就是浅拷贝,对于基本数据类型,就是赋值操作,只存在浅拷贝,而对于引用数据类型来说浅拷贝往往不能满足我们的需求: 例如: var obj={name:'jack', 阅读全文
posted @ 2019-03-29 22:45 短腿~欧尼 阅读(219) 评论(0) 推荐(0) 编辑
摘要: ajax原理和XmlHttpRequest对象 Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpReques 阅读全文
posted @ 2019-03-28 12:27 短腿~欧尼 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 方法一:var arr=[1,[2,[3,2,3],4,1],3]function fun(arr){return arr.reduce((pre,item)=>{return pre.concat(Array.isArray(item)?fun(item):item)},[])}const a=f 阅读全文
posted @ 2019-03-26 19:20 短腿~欧尼 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 方法一:原生for循环的方式 阅读全文
posted @ 2019-03-26 19:07 短腿~欧尼 阅读(179) 评论(0) 推荐(0) 编辑
摘要: const str='aaaaaaaaaaaaaaaaabbbbbbbccccdde'function fun(str) { const obj={} const st=str.split('') for (var i=0;i<st.length; i++){ if(obj[st[i]]){ obj 阅读全文
posted @ 2019-03-26 18:51 短腿~欧尼 阅读(526) 评论(0) 推荐(0) 编辑
摘要: 图层 & 重排 & 重绘 图层 浏览器在渲染一个页面时,会将页面分为很多个图层,图层有大有小,每个图层上有一个或多个节点 渲染 DOM 时 浏览器所做的: 获取 DOM 后分割为多个图层 对每个图层的节点计算样式结果 (Recalculate style--样式重计算) 为每个节点生成图形和位置 ( 阅读全文
posted @ 2019-03-21 18:17 短腿~欧尼 阅读(710) 评论(0) 推荐(0) 编辑
摘要: 避免一个函数频繁执行 - 避免程序卡顿 js 是单线程的,setTimeout 这样的函数是异步的 异步的代码,交给对应的模块进行处理 模块在会将异步任务,在主线程执行完所有同步代码后,加入事件队列 模块在没有同步代码的时候,才会执行异步代码 函数防抖(连续触发,只执行最后一次) 具体应用: 在用户 阅读全文
posted @ 2019-03-21 18:16 短腿~欧尼 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 1. js数据类型有哪些? 基本(值)类型 Number 任意数值 String 任意字符串 Boolean true/false undefined undefined null null 对象(引用)类型 Object Array Function 2. 判断数据类型的方法? typeof 不能 阅读全文
posted @ 2019-03-21 18:09 短腿~欧尼 阅读(556) 评论(0) 推荐(0) 编辑