- 博客(116)
- 收藏
- 关注
原创 算法思维体操:基于generator生成器自己实现Async/Await(TypeScript)
思路:先使用一个while循环遍历generator生成器收集next次数,然后for循环再遍历generator生成器,前后传递生成器Promise.then得到的值,诀窍是使用setTimeout属于宏队列,promise属于微队列,同一次事件循环中setTimeout总会先于promise执行这一JS异步编程特性。不足之处:generator生成器函数会被执行两次,如果在其中有声明console的话,会让人觉得有些奇怪,但是最终的返回值结果倒是正确。下面是一个Async/Await函数的示例。
2025-04-30 22:20:17
1021
原创 算法思维体操:用JavaScript和Python自己实现reduceRight和map(链表)
比如,假设链表为“cons(1, cons(2, cons(3)))",”myReduceRight(fn, accm, list)"应该返回执行“fn(1, fn(2, fn(3, accm)))"得到的结果。比如,假设链表为“cons(1, cons(2, cons(3,)))”,“myReduce(fn, accm, list)”应该返回执行“fn(fn(fn(accm, 1), 2), 3)”得到的结果。它循序遍历链表中的每一个元素,并返回一个各元素都被”fn“转化过了的链表。
2025-04-30 22:15:02
900
原创 JavaScript专项算法题(7):Iterators迭代器
使用async/await来console.log打印一个由名词noun和动词verb构成的句子,其中非异步函数会接收一个名词noun,与一个硬编码的动词verb拼接,在三秒后返回给异步函数。此函数会遍历传入的数组,返回对应的遍历元素和字符串“was found after index x”拼接而成的字符串结果,其中的x是前一个下标。当调用.next时,它会返回带有两个元素的数组(第一个为下标,第二个为下标对应的数组元素)。B) 创建一个函数式迭代器,调用时遍历传入的数组的每一个元素,每次一个元素。
2025-04-30 22:11:25
435
原创 JavaScript专项算法题(6):Promises
创建两个变量:firstPromise和secondPromise,让secondPromise成为一个在resolve中传值“Second!”的promise,firstPromise则在resolve中传入secondPromise。用.then的方式调用firstPromise,这会返回secondPromise,然后在它的resolve执行之后,打印对应promise的内容,借助传入console.log到.then来实现。创建一个promise。编写delay函数,用于返回一个promise。
2025-04-30 22:09:36
264
原创 JavaScript专项算法题(5):面向对象
在不改变上述已写代码的情况下,给PersonConstructor函数添加一个打印“Hi, my name is [name]"的introduce方法。在不改变上述已写代码的情况下,给personStore对象添加一个用于打印“Hi,my name is [name]"的introduce方法。构建adminFactory函数,用于创建一个包含userFactory下所有数据域及默认值的对象,在不将数据域逐个于自身内复制的情况下。的接受两个参数(name和age)的函数,返回一个对象。
2025-04-30 22:05:29
1863
原创 JavaScript专项算法题(4):异步
构建debounce函数,接受参数为一个回调函数callback和一个数值interval,返回结果为一个函数。此返回函数仅会在其上次调用回调函数的interval毫秒后才会被再次调用回调函数。构建delayCounter函数,接受的第一个参数为一个数组(称为target),第二个参数为毫秒单位的数字(称为wait),返回结果为一个函数。它会返回一个在两秒后触发resolve函数的Promise对象。当返回函数被调用时,它会依序打印从1到target之间的数字(含target),以wait毫秒的时间间隔。
2025-04-30 22:01:36
544
原创 JavaScript专项算法题(3):闭包
问题:构建createFunction函数,用于创建和返回函数。当被创建的函数被调用时,它会打印“hello"。题解:挑战2 createFunctionPrinter问题:构建接受一个输入值作为参数的createFunctionPrinter函数,用于创建和返回一个特定函数。当特定函数被调用时,其应该打印特定函数被创建时输入createFunctionPrinter中的值。题解:挑战3 addByX问题:观察下面outer函数的实现代码。注意其会返回一个函数而且那个函数使用了不在其作用域的变量。尝
2025-04-30 21:58:08
719
原创 JavaScript专项算法题(2):函数式编程
commutative会返回一个布尔值,从而表明运行第一个回调函数于输入值,再将得到的返回值输入到第二个回调函数中运行,得到的结果与逆序操作是否相同(即运行输入值于第二个回调函数,得到的返回值再输入到第一个回调函数中)。构建delay函数,作用为接受一个回调函数作为第一个参数,一个数值n(单位为毫秒)作为第二个参数,返回一个特定函数。pipe会将输入值输入到数组的第一个函数中,然后再将得到的输出值输入到第二个函数中,然后输出值又再输入到第三个函数中,一直下去,直到得到数组的最后一个函数的输出值。
2025-04-30 21:55:48
1011
原创 JavaScript专项算法题(1):回调和高阶函数
以下是它的运行原理。commutative会返回一个布尔值,从而表明运行第一个回调函数于输入值,再将得到的返回值输入到第二个回调函数中运行,得到的结果与逆序操作是否相同(即运行输入值于第二个回调函数,得到的返回值再输入到第一个回调函数中)。pipe会将输入值输入到数组的第一个函数中,然后再将得到的输出值输入到第二个函数中,然后输出值又再输入到第三个函数中,一直下去,直到得到数组的最后一个函数的输出值。每一个运行回调函数得到的返回值会被储存为特定对象的键,而键对应的值则为得到此返回值的回调函数运行的次数。
2025-04-30 21:51:41
809
原创 如何用优雅的格式打印C语言代码?
自己在学习过程中发现,大家经常用来敲代码的sublime没有提供代码打印功能,而教学过程中用到的Dev-C++打印出来的东西则是歪歪扭扭的,十分难看。Visual C++ 6.0 更是由于兼容性问题,在本人的win10上无法打印——因此,安利一款可以用优雅格式打印C语言代码的软件——Keil C。只需要区区4个步骤,便可用优雅的格式打印C语言代码。
2025-04-30 21:42:17
204
原创 一元多项式的加法、减法、乘法和微分运算的C语言链表结构算法实现
利用链表实现一元多项式的数学运算。如一元多项式可以利用其系数p和指数e组合的方式实现链式存储。通过对线性表的基本操作,例如插入,删除,查找等可以实现一元多项式的复杂运算,比如加,减,乘,除等运算。
2025-04-30 21:30:21
667
原创 约瑟夫环问题的C语言算法实现
约瑟夫(Joseph)问题的一种描述是:编号为 1,2,…,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值 m,从第一个人开始按顺时针方向自 1 开始顺序报数,报到 m 时停止报数。报 m 的人出列,将他的密码作为新的 m 值,从他在顺时针方 向上的下一个人开始重新从 1 报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。
2025-04-30 21:09:34
240
原创 CSS中伪元素的定位上下文问题
在研究CSS名著《CSS设计指南》(第3版)中,对讲到界面组件中的用CSS为弹出层设计三角形这个知识点时,对例子代码中伪元素的定位上下文关系产生了很大的困惑。浏览器渲染后的效果如下:文字说明框在鼠标悬浮于图片上时出现,同时框左边会出现由于边框透明原理而生出的三角形。根据《CSS设计指南(第3版)》中对定位上下文的解释,在讲绝对定位的时候,我们知道绝对定位元素默认的定位上下文是body。这是因为body是标记中所有元素唯一的祖先元素。
2025-04-30 21:00:48
400
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人