LeetCode 前端算法题
难度:简单
2619. 数组原型对象的最后一个元素
ts
Array.prototype.last = function() {
let len = this.length
if(len === 0) return -1
return this[len -1]
};
处理数组长度为0 和,最后一个数据,当然使用 this 指向当前数组。
2620. 计数器
给定一个整型参数 n,请你编写并返回一个 counter 函数。这个 counter 函数最初返回 n,每次调用它时会返回前一个值加 1 的值 ( n , n + 1 , n + 2 ,等等)。
ts
/**
* @param {number} n
* @return {Function} counter
*/
var createCounter = function(n) {
let ifInit = false; // 初始化 flat
let res // 初始化闭包变量
return function() {
if (!ifInit) {
ifInit = true
res = n;
} else {
res += 1
}
return res
};
};
/**
* const counter = createCounter(10)
* counter() // 10
* counter() // 11
* counter() // 12
*/
这里有一点,要能处理 负数
, 也就是不同使用 0
做假值判断。
2621. 睡眠函数
- 接收一个正整数参数 millis ,并休眠 millis 毫秒。要求此函数可以解析任何值
- 执行完时返回一个 Promise 对象
ts
async function sleep(millis) {
return new Promise((resolve) => {
setTimeout(() => {
resolve()
}, millis)
})
}
很简单使用,使用 Promise 和定时器组合即可, 当然也可以简化语法:
ts
const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms))
小结
本文主要介绍了三个简单的算法题,目的是前端方向其实是算法,三个题目主要关注的点是数组的长度访问,数组原型的 this 指向,计数器中的闭包的使用方法,使用 promise + setTimeout 实现经典的睡眠函数。