前端小芝士
小乖~
这个作者很懒,什么都没留下…
展开
-
数组拍平啦啦啦啦~
还是照旧贴上写的很好的博客。。。数组拍平1接下来就自己复述阶段啦1、人家数组有自己拍平的方法flat啊,(还用得着自己写?)arr.flat(Infinity)//不管你多少层都拍成1层arr.flat(1)// [ 1, [ 2 ], [ 3, [ 4, 5 ] ] ]=>[ 1, 2, 3, [ 4, 5 ] ],只拍平了第一层的元素arr.flat()//不传值,默认为arr.flat(1)要注意的一个点啦:arr.flat()是返回值新的改变的数组,但是原来的数组并没有改变原创 2020-09-01 10:00:35 · 188 阅读 · 0 评论 -
关于TCP拥塞控制的理解和TCP流量控制
拥塞和拥塞控制TCP的拥塞控制(详解)拥塞及控制这两篇讲的非常好。赞。。。接下来谈一下看后自己对拥塞控制的理解。网络拥塞概念拥塞 当网络中存在过多的报文时,网络的性能就会相应下降,这种现象就被成为拥塞。拥塞控制 要考虑到整个网络环境,使其负载不能超过网络的最大承受能力。显然拥塞发生的原因是因为“需求”大于了“供给”,网络中的有限资源被多用户共享使用,网络本身无法根据资源的利用情况来限制某些用户,并且随着目前互联网的发展,上网的用户和应用的数量也随之增长,这样,如果不采取某种措施来协调资源的使原创 2020-09-01 08:12:44 · 400 阅读 · 0 评论 -
手写一个bind函数,利用扩展运算符之简易版
//手写一个mybind,必须放到Function.prototype中,这样函数才能掉用呀Function.prototype.mybind = function (...args) {//获取当前的this let slef = this //获取第一个参数 let context = args.slice(0, 1) //返回的是一个函数 return function (...args1) { //拼接参数,并用apply来实现 slef.apply(conte原创 2020-08-19 08:38:07 · 176 阅读 · 1 评论 -
手动实现一个简易Promise.all和Promise.race
手写一个简易Promise.alllet allPromise = function (arr) {//存储结果 let results = [] //要可以实现then和catch等,自然就是返回Promise结构 return new Promise((reslove, reject) => { for (let i = 0; i < arr.length; i++) { arr[i].then(data => { results.p原创 2020-08-16 08:57:30 · 606 阅读 · 0 评论 -
js关于二维数组复制的奇怪(并不)现象
let arr = [ [1, 2, 3, 4], [3]]let arr1 = arr.concat([])arr1[0].push(5)console.log(arr, arr1, arr === arr1, arr[0] === arr1[0]);//[ [ 1, 2, 5 ], [ 3 ] ] [ [ 1, 2, 5 ], [ 3 ] ] false true由上述的代码可知,当二维数组进行复制的时候,(用concat、slice等数组方法的时候)只是对外层维进行深复制,而每层原创 2020-08-04 10:54:50 · 228 阅读 · 0 评论 -
js实现一个filter
function fn(value, index, arr) { return value > 20}Array.prototype.myfilter = function (fna) { let arr = [] let arr1 = Array.prototype.slice.call(this, 0, this.length) for (let i = 0; i < arr1.length; i++) { if (fna(this[i], i, this))原创 2020-06-17 17:28:30 · 686 阅读 · 0 评论