本文主要是介绍JS算法练习 11.11,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
leetcode 2619 数组原型对象的最后一个元素
请你编写一段代码实现一个数组方法,使任何数组都可以调用 array.last()
方法,这个方法将返回数组最后一个元素。如果数组中没有元素,则返回 -1
。
你可以假设数组是 JSON.parse
的输出结果。
示例 1 :
输入:nums = [null, {}, 3] 输出:3 解释:调用 nums.last() 后返回最后一个元素: 3。示例 2 :
输入:nums = [] 输出:-1 解释:因为此数组没有元素,所以应该返回 -1。
太无脑了,下一个
Array.prototype.last = function() {n = this.lengthif(n == 0)return -1else return this[n-1]};
leetcode 2620 计数器
给定一个整型参数 n
,请你编写并返回一个 counter
函数。这个 counter
函数最初返回 n
,每次调用它时会返回前一个值加 1 的值 ( n
, n + 1
, n + 2
,等等)。
示例 1:
输入: n = 10 ["call","call","call"] 输出:[10,11,12] 解释: counter() = 10 // 第一次调用 counter(),返回 n。 counter() = 11 // 返回上次调用的值加 1。 counter() = 12 // 返回上次调用的值加 1。示例 2:
输入: n = -2 ["call","call","call","call","call"] 输出:[-2,-1,0,1,2] 解释:counter() 最初返回 -2。然后在每个后续调用后增加 1。
var createCounter = function(n) {let count = nreturn function() {return count ++};
};
虽然这道题无脑的要命,但我们还是回顾一下JS的闭包知识。
闭包的含义:如果一个函数访问了此函数的父级及父级以上的作用域变量,那么这个函数就是一个闭包。
来一个JS闭包小练习
判断一下下面代码的输出
var a = 10
function foo(){console.log(a)
}function bar() {var a = 20foo()
}bar()
答案:10
为什么不是20?
因为JavaScript中的作用域是词法作用域,即函数在定义时就确定了它的作用域,而不是在运行时。因此,foo()函数在定义时的上一级作用域是全局作用域,而不是在bar()函数中的局部作用域。在foo()函数中,并没有定义变量a,因此它会向上一级作用域即全局作用域查找。
leetcode 2621 睡眠函数
请你编写一个异步函数,它接收一个正整数参数 millis
,并休眠 millis
毫秒。要求此函数可以解析任何值。
示例 1:
输入:millis = 100 输出:100 解释: 在 100ms 后此异步函数执行完时返回一个 Promise 对象 let t = Date.now(); sleep(100).then(() => {console.log(Date.now() - t); // 100 });示例 2:
输入:millis = 200 输出:200 解释:在 200ms 后函数执行完时返回一个 Promise 对象
async function sleep(millis) {return new Promise((resolve) => {setTimeout(()=> {resolve()}, millis)})
}
复习一下Promise用法吧
function fetchData(i) {return new Promise((resolve, reject) => {// 模拟异步操作setTimeout(() => {const data = 'Hello, world!';// 模拟异步操作成功if(i==1)resolve(data);// 模拟异步操作失败if(i==2)reject(new Error('Failed to fetch data.'));}, 200);});}fetchData(1).then((data) => {console.log(data); // 异步操作成功时执行}).catch((error) => {console.error(error); // 异步操作失败时执行}).finally(() => {console.log('Promise has been resolved or rejected.'); // 无论成功失败都会执行});
这篇关于JS算法练习 11.11的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!