4 Beijiyang999

尚未进行身份认证

暂无相关简介

等级
TA的排名 4w+

用 reduce 实现一行代码深拷贝对象/数组

一行实现深拷贝数组constdeepCopyArr=arr=>arr.reduce((acc,cur)=>(curinstanceofArray?[...acc,deepCopyArr(cur)]:[...acc,cur]),[])一行实现深拷贝对象constdeepCopyObj=obj=>Object.entries...

2019-05-23 05:47:21

经典闭包题目ES7新解

题目for(vari=0;i<5;i++){setTimeout(function(){console.log(newDate,i)},1000)}console.log(newDate,i)输出:5(1s)55555如何变成:5(1s)0(1s)1(1s)2(1s)3(1s)4经典解法闭包fo...

2019-05-02 05:43:31

垂直居中:两方向,四方法,条条大路通罗马

垂直居中常见的四种方法总结两条路,即flexbox或者绝对定位。四种方法,分别如下:方法一:flexbox#container{display:flex;justify-content:center;align-items:center;}方法二:绝对定位2.1先把顶点移动到中心,再挪回自身长宽的一半(transform-translate)...

2019-03-07 19:26:06

JavaScript实现简单的二叉树中序遍历(class / prototype 写法)(附 Python)

一棵简单的二叉树如图。构建二叉树首先,构建如图的二叉树,并添加一个打印该树的方法printTheTree。ES6class语法如下classTreeNode{constructor(value){this.value=valuethis.left=nullthis.right=null}printTheTree()...

2018-11-13 22:42:31

ASCII码在算法题中的两个小妙用:转换字母大小写 与 转换整数字符String/Number类型(JavaScript/Python描述)

最少必要知识‘0’对应的ASCII码是48‘A’对应的ASCII码是65'a‘对应的ASCII码是97这也是JavaScript中'a'>'A'为true的原因。转换字母大小写假设做如下规定参数letter:为单个英文字母字符;参数mode:小写换大写为1;大写换小写为-1。JavaScript:consttoUpperO...

2018-11-12 01:17:44

用 JavaScript 创建一个栈,并优化时间复杂度 (附 Python 描述)

题目描述:Designastackthatsupportspush,pop,top,andretrievingtheminimumelementinconstanttime.要实现的栈方法push(x)–Pushelementxontostack.pop()–Removestheelementontopofthestack....

2018-11-12 00:37:28

滚动条挤占内容宽度、破坏布局的解决方案

问题当内容增多,滚动条从无到有时,它的出现挤压了内容宽度,导致原来设计好的布局被破坏。原因滚动条的宽度是计算到内容content里的。解决思路增加一个中间层,使得外部容器宽度保持设计宽度,内部元素排列保持不变。具体案例使用antd的Modal弹窗,基于其最简单的基本示例,如图:希望的效果:弹窗定宽定高;一排4个,宽度、边距固定;当总...

2018-08-21 17:11:02

JavaScript 用一个一元函数精简地实现 ES6 的 findIndex 与 findLastIndex 方法

普通地实现findIndex与findLastIndexES6新增了findIndex与findLastIndex数组方法,可以正序、反序地查询,并返回数组中满足回调函数的第一个元素的索引,否则返回-1。//用法arrayObj.findIndex(callbackfn[,thisArg]);//回调函数用法functioncallbackfn(value...

2018-07-10 00:25:54

JavaScript 实现 对象、数组、类数组通用的遍历方法 each

jQuery的each方法jQuery有个each方法,是对于对象、数组通用的遍历方法。具体的用法参考官方文档:.each()今天我们也来实现这样一个each方法。思路参数:参考jQuery,each方法接收两个参数:要遍历的对象;要在其上执行的回调函数。逻辑:自然是要先判断其类型,是数组(类数组)就执行for循环(forEac...

2018-07-08 22:41:46

grid 入门:用 grid 布局轻松解决 flex 布局不太好做的一个问题

最近一个需求如图:大概是数据上,react组件从父组件接收两个数组,分别渲染出左右两列;左右两列内容都是动态的,要求自适应文字高度,同一行其行高一致;左列文字右对齐,右列文字左对齐;伪代码:Array1.map(渲染左列表组件)Array2.map(渲染右列表组件)...

2018-06-30 17:05:54

二分搜索 / 折半查找

查找/搜索算法中,顺序搜索没什么好说的,从二分搜索/折半查找开始。步骤选择中间值(low+high)/2如果它是目标值,bingo~如果大了,从其左边的一半找如果小了,从其右边的一半找如果找不到,返回-1或null等注意:需要数组本身有序递归实现functionbinaryhSearch(arr,low,high,target)...

2018-05-06 13:14:55

几种常见的排序算法总结(JavaScript 描述)

本文讨论:冒泡排序、插入排序、希尔排序、简单搜索排序、快速排序、归并排序、堆排序。冒泡排序介绍冒泡排序比较任何两个相邻的项。如果前一个比后一个大,就交换它们。元素向上移动至正确的位置,看上去就像水中上升的气泡一样。代码functionbubbleSort(arr){letlength=arr.length;letflag;...

2018-05-06 00:49:02

JavaScript 实现 reduce() 方法函数

思路与之前两篇文章(map()的实现,filter()的实现)中的迭代方法不一样,reduce()是归并方法。reduce接收两个参数:第一个参数是在每一项上调用的函数该函数接收4个参数:前一个值prev当前值cur项的索引index数组对象array第二个可选参数是作为归并基础的初始值reduce方法返回一个最终的值。代码表示...

2018-05-03 20:40:01

JavaScript 实现 filter() 方法函数

思路filter方法接收两个参数:对每一项执行的函数该函数接收三个参数:数组项的值数组项的下标数组对象本身指定this的作用域对象filter方法返回执行结果为true的项组成的数组。代码表示:arr.filter(function(item,index,arr){},context)实现由此,实现fakeFilter...

2018-05-03 14:26:57

JavaScript 实现 map() 方法函数

思路map迭代方法接收两个参数:对每一项执行的函数该函数接收三个参数:数组项的值数组项的下标数组对象本身指定this的作用域对象map方法返回每次函数调用结果组成的数组。代码表示:arr.map(function(item,index,arr){},this);实现由此,实现fakeMap方法如下代码:Array...

2018-05-03 13:57:52

用 JavaScript 函数实现时间格式转换('46秒' => '00:00:46')

题目假设传入的参数就是“2时5分”、“3时46秒”这种格式的字符串,省去参数类型检测。略去检测分秒数大于60的情况。思路:先把字符串split打散转换为数组forEach()遍历数组元素找出“时”、“分”等关键词的index据此切分拼接新格式数组注意点:arguments和对应参数的绑定非严格模式下,当传入实参,实参和arguments...

2018-05-03 02:13:56

Understanding Block Formatting Contexts in CSS

A BlockFormattingContext ispartofthevisualCSSrenderingofawebpageinwhichblockboxesarelaidout.The positioningscheme towhichitbelongsis normalflow.Accordingto W3C:Fl

2018-04-30 21:07:32

JavaScript 实现继承的方式:原型链、组合式、寄生组合式

原型链继承letParent=function(){this.name=[‘parent']}Parent.prototype.sayName=function(){console.log(this.name)}letChild=function(){}Child.prototype=newParent()//原型式继承l...

2018-04-14 19:10:44

JavaScript 函数节流(throttle)的实现

函数节流是什么对于持续触发的事件,规定一个间隔时间(n秒),每隔一段只能执行一次。上一篇讲的函数防抖(debounce)与本篇说的函数节流(throttle)相似又不同。函数防抖一般是指对于在事件被触发n秒后再执行的回调,如果在这n秒内又重新被触发,则重新开始计时。二者都能防止函数过于频繁的调用。区别在于,当事件持续被触发,如果触发时间间隔短于规定的等待时间(n秒),那么...

2018-04-06 20:27:32

JavaScript 函数防抖(debounce)的实现

函数防抖是什么函数防抖是指对于在事件被触发n秒后再执行的回调,如果在这n秒内又重新被触发,则重新开始计时,是常见的优化,适用于表单组件输入内容验证防止多次点击导致表单多次提交等情况,防止函数过于频繁的不必要的调用。代码实现思路用setTimeout实现计时,配合clearTimeout实现“重新开始计时”。即只要触发,就会清除上一个计时器,又注册...

2018-04-06 12:53:52

查看更多

勋章 我的勋章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。