JS手撕(八) Promise Promise实现 Promise的原理之前有写过两篇博客,就不细讲了。 但还是需要简单复习一下下。
JS手撕(七) 事件总线 事件总线 事件总线是什么呢? 事件总线其实就是发布订阅模式的一种实现。 学习JS的话,就一定会接触到事件的概念。
JS手撕(三) 节流、防抖 节流和防抖 前端开发中会遇到一些频繁的事件触发,像是resize、scroll、mousedown、mousemove、keyup、keydown等。...参考 死磕 36 个 JS 手写题(搞懂后,提升真的大) - 掘金 GitHub - qianlongo/fe-handwriting: 手写各种js Promise、apply、call、bind、new
/promisify.js');const readFile = promisify('fs.readFile'); // 转换异步读取// 异步文件 由回调函数形式变成promise形式readFile
JS手撕(九) 常用Promise API 前言 上一篇已经手撕了一个简单版本的Promise。现在就在继续手撕常用的Promise API。...因为p4先得到结果 参考 Promise学习笔记(一) | 赤蓝紫 GitHub - qianlongo/fe-handwriting: 手写各种js Promise、apply、call、bind、
JS手撕(十一) 选择排序、快速排序 选择排序 原理 选择排序原理就是每次从未排序序列中选择最小元素,放到已排序序列的末尾。 那么如何选择最小元素,并把最小元素放到已排序序列的末尾?...图片来自菜鸟教程 JS实现 function selectSort(arr) { const len = arr.length; let minIndex; // 保存最小数的索引.../sort.js'); let arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 26, 4, 19, 50, 48]; console.log(selectSort...该操作称为分区操作(partition) 递归地把小于基准值地子序列和大于基准值地子序列排序 图片来自菜鸟教程 JS实现 function quickSort(arr, l, r) { if...Math.floor(Math.random() * (r - l) + l); [arr[l], arr[pivot]] = [arr[pivot], arr[l]]; pivot = l; JS
前言 最近在准备面试,刚好利用几天的时间系统的整理了下JS经常考的手撕题类型。 在这里,以脑图的形式带大家手撕这篇文章里的所有题(带注释)。 脑图里的所有题型即是本文中的30道常考高频题 脑图? ?...30道JS高频手撕题 1.手动实现一个浅克隆 浅克隆: 只拷贝对象或数组的第一层内容 const shallClone = (target) => { if (typeof target === '...}); } next(); }; asyncFunc(function* () { // 生成器函数:控制代码一步步执行 let data = yield readFile('a.js...'); // 等这一步骤执行执行成功之后,再往下走,没执行完的时候,直接返回 data = yield readFile(data + 'b.js'); return data; }) 17....sayHello('时光屋小豪'); let demo2 = sayHello('掘友们'); let demo3 = sayHello('公众号的朋友们'); }; autoRun(); 20.ES5手动实现数组
JS手撕(十) 冒泡排序、插入排序 冒泡排序 原理 冒泡排序原理就是依次比较相邻元素,如果前面的比后面的大,那就互换位置。从第一对比到最后一对。...下面的动图来自于菜鸟教程(贴出来主要是为了能更好的理解) JS实现 实现: function bubbleSort(arr) { const len = arr.length; for (let...(如果待插入元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面,这是为了让插入排序是稳定的) JS实现 function insertSort(arr) { const len =.../sort.js'); let arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 26, 4, 19, 50, 48]; console.log(insertSort
JS手撕(一) 类型判断、instanceof、数组去重 前言 看这篇文章的小伙伴,建议看完每一节,都尝试自己手撕一遍,最好就是弄懂原理后再开始手撕(不要边看边手撕,会产生依赖),本人就是看别人的文章后手撕的...(因为手撕题型记不住,还有一些大佬有很有意思的解法) 类型判断 有用过JS一段时间的小伙伴应该对typeof比较属性,我们需要进行类型判断的时候一般都会先想到它。...但是呢,它有一个很大的局限性,比如如果是null、array都会被认为是object,array是因为是一个特殊的对象,而null则是因为JS诞生以来null的实现导致的。...所以现在就来手撕一个类型判断函数。原理就是使用Object.prototype.toString来获取具体的类型。...手写题(搞懂后,提升真的大) - 掘金 GitHub - qianlongo/fe-handwriting: 手写各种js Promise、apply、call、bind、new、deepClone…
--引入zdog文件--> //...如果各位感兴趣的话,下一期我将带领大家成为一位代码上的灵魂画手! 五、参考资料 Zdog官方文档[1] References [1] Zdog官方文档: https://zzz.dog/
JS手撕(五) new、Object.create()、Object.assign() new关键字 实现new关键字,首先得了解一下new关键字究竟干了什么。...', age: 999} console.log(target === result); // true 参考 GitHub - qianlongo/fe-handwriting: 手写各种js
作者:洛霞 https://juejin.im/post/6875152247714480136 作为前端开发,JS是重中之重,最近结束了面试的高峰期,基本上offer也定下来了就等开奖,趁着这个时间总结下...32个手撕JS问题,这些都是高频面试题,完全理解之后定能彻底摆脱初级前端。
type: 'Coder' } } console.log(deepCopyObj); // { name: 'czh', job: { type: 'tester' } 参考 死磕 36 个 JS...手写题(搞懂后,提升真的大) - 掘金 GitHub - qianlongo/fe-handwriting: 手写各种js Promise、apply、call、bind、new、deepClone…...面试官连环追问:数组拍平(扁平化) flat 方法实现 - 掘金 (建议精读)原生JS灵魂之问(中),检验自己是否真的熟悉JavaScript? - 掘金
JS手撕(四) call、apply、bind、柯里化、偏函数 call call()方法就是使用一个指定的this值和一个或多个参数来调用一个函数。...手撕(简单版本) Function.prototype.myBind = function (context, ...args1) { context = context || window;...,而是不够的参数直接把值当成`undefined` addPartial(7)(8); // 报错,不能像柯里化一样(有点点像低配柯里化) 参考 死磕 36 个 JS...手写题(搞懂后,提升真的大) - 掘金 GitHub - qianlongo/fe-handwriting: 手写各种js Promise、apply、call、bind、new、deepClone…
ClientId=www.yachengyl.cn"authentication",//客户端唯一标识
今天的数据集来自于之前的爬虫项目:爬取城市二手房数据,今天的文章亦是对深圳存量二手房的一个分析实战。...文章会对深圳整体、各区域的二手房价格、二手房属性等多个维度进行探索,相信你会从中发现影响房屋价格的主要因素。...,并以房屋总价作为数值标准绘制出二手房的分布图 可以很清楚的看到,二手房存量区域的主要集中区域 其中,800w+的存量二手房则多是集中在福田、南山、等关内区域 总结 目前深圳市各区域二手房存量分布差异较大...在二手房属性上,装修方式、结构、房屋用途等均会对总价产生影响,其中装修方式为简装和毛胚的二手房占整体存量的 30% 左右。 在二手房价格方面,需要注意个别极大值对整体数据的影响,避免数据被平均化。...市场相关 需要注意的是,本文的数据集是 2021年6月 采集的,而深圳在 2021年2月 的时候出台了二手房指导价政策,对于市场而言,新政策之后的二手房明显没有新房更香 在新政策出台之后,深圳二手房成交量接连下滑
平时工作的时候,用的最多的就是ArrayList和HashMap了,今天看了遍HashMap的源码,决定自己手写一遍HashMap。
五.整体代码实现 #include #include #include using namespace std; //直接上手手搓一个...public: //vector采用迭代器,这里使用指针实现 typedef T* iterator; typedef const T* const_iterator; //首先上来手搓构造
看到这里就可以愉快的扣js了,哪里没有补哪里。就不过多赘述了。
领取专属 10元无门槛券
手把手带您无忧上云