【JS-Leetcode】2621睡眠函數|2629復合函數|2665計數器||

文章目錄

    • 2621睡眠函數
    • 2629復合函數
    • 2665計數器||

這三個題目涉及setTimeout、promise、數組reduce方法,閉包。

2621睡眠函數

請你編寫一個異步函數,它接收一個正整數參數 millis ,并休眠 millis 毫秒。要求此函數可以解析任何值。
在這里插入圖片描述

  • 原理:返回一個promise,在這個promise中進行一個對應時長的延遲setTimeout,延遲結束執行resolve。
async function sleep(millis) {return new Promise((resolve,reject)=> {setTimeout(()=>{resolve();},millis)})
}

setTimeout的本質是延遲執行,只執行一次。一般用于延遲指定的時間后執行一次回調函數。
setInterval的本質是定時執行,會不斷重復執行,直到取消。所以這個題要用setTimeout。

2629復合函數

請你編寫一個函數,它接收一個函數數組 [f1, f2, f3,…, fn] ,并返回一個新的函數 fn ,它是函數數組的 復合函數 。
[f(x), g(x), h(x)] 的 復合函數 為 fn(x) = f(g(h(x))) 。
一個空函數列表的 復合函數 是 恒等函數 f(x) = x 。
你可以假設數組中的每個函數接受一個整型參數作為輸入,并返回一個整型作為輸出。
在這里插入圖片描述

  • 原理:初始值為x,(param,fn)代表param初始值= x,而當前正在處理的數組元素是fn,箭頭函數執行fn(param),然后將結果賦給param,作為下一個fn的入參,由于從右往左執行,因此使用reduceRight代替reduce。
/*** @param {Function[]} functions* @return {Function}*/
var compose = function(functions) {  return function(x) {return functions.reduceRight((param,fn)=>fn(param),x)}
};
/*** const fn = compose([x => x + 1, x => 2 * x])* fn(4) // 9*/
  • 如果這里functions.reduceRight((target,fn)=>fn(target),x)還是感覺很暈,可以
    對應數組累加和arr.reduce((acc,curvalue)=>acc+curvalue,0)進行理解。
    還不理解就要補點reduce的語法知識了,看JS數組方法reduce來深入了解一下reduce的語法。

2665計數器||

請你寫一個函數 createCounter。這個函數接收一個初始的整數值 init。并返回一個包含三個函數的對象。
這三個函數是:
increment() 將當前值加 1 并返回。
decrement() 將當前值減 1 并返回。
reset() 將當前值設置為 init 并返回。
在這里插入圖片描述
原理:閉包。
什么是閉包?
閉包指的是一個函數可以記住其外部變量并且可以訪問這些外部變量

函數在創建時,會創建一個隱藏起來的environment屬性,這個屬性記住了它們創建的位置,當在函數內部找不到變量時,它們可以訪問外部變量。

在increment()中并沒有定義temp,于是訪問createCounter()中的temp,++temp會返回+1后的結果,同時這也將修改外部temp的值,所以如果連續調用就會持續加1。其他函數同理。

/*** @param {integer} init* @return { increment: Function, decrement: Function, reset: Function }*/
var createCounter = function(init) {let temp = init;return { increment:function(){return ++temp;},decrement:function(){return --temp;},reset:function(){temp = init;return temp;}}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78640.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78640.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78640.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

重塑編程體驗邊界:明基RD280U顯示器深度體驗

重塑編程體驗邊界:明基RD280U顯示器深度體驗 寫在前面 本文將以明基RD280U為核心,通過技術解析、實戰體驗與創新案例,揭示專業顯示器如何重構開發者的數字工作臺。 前言:當像素成為生產力的催化劑 在GitHub的年度開發者調查中&…

如何通過挖掘需求、SEO優化及流量變現成功出海?探索互聯網產品的盈利之道

挖掘需求,優化流量,實現變現:互聯網出海產品的成功之路 在當今全球化的數字時代,越來越多的企業和個人選擇將業務擴展到國際市場。這一趨勢不僅為企業帶來了新的增長機會,也為個人提供了通過互聯網產品實現盈利的途徑…

cuda學習2:cuda編程基本概念

CUDA基本概念 主機(host) 通常將起控制作用的CPU稱為主機(host) 設備(device) 將起加速作用的 GPU 稱為設備(device) 流處理器(streaming processor) 物…

AVL樹的介紹與學習

目錄 1.前言 2.AVL樹 3.AVL樹的插入 平衡因子的更新 更新停止的條件 旋轉 1.前言 在學習了二叉搜索樹,set和map之后,我們接下來趁熱打鐵,繼續學習AVL樹。 2.AVL樹 1.AVL樹具有二叉搜索樹的性質,但是它的左右子樹的高度差不…

數字人接大模型第二步:實時語音同步

接上例第一步,還是dh_live項目,增加了一個完整的實時對話樣例,包含vad-asr-llm-tts-數字人全流程,以彌補之前的只有固定的問答的不足。 VAD(Voice Activity Detection,語音活動檢測)VAD用于檢測用戶是否正在說話,從而觸發后續的語音處理流程。 ASR(Automatic Speech R…

01_Long比較值 類型相同值不同

問題描述: 看如下代碼: Long a 128L; Long b 128L;System.out.println(a b);運行結果如下: 明明 a 和 b 的值一樣,但是結果卻為 False,為什么同樣的類型,同樣的值,卻不相等,這是…

EKS環境下服務重啟50X錯誤

EKS中,當使用AWS Load Balancer Controller時,ALB有兩種模式,Internet-facing和Internet,當使用Internet模式時,ALB注冊的是NodeIP;使用Internet-facing模式時,ALB注冊的則是Pod IP。從模式上來…

Android項目升級插件到kotlin 2.1.0后混淆網絡請求異常

背景 項目kt插件1.9.24升級到2.1.0后打包編譯release網絡請求失敗了。 retrofit版本2.9.0 錯誤詳情 java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedTypeat retrofit2.m.a(Unknown Source:2477)at retrofit2.K.invoke(U…

Vue中Axios實戰指南:高效網絡請求的藝術

Axios作為Vue生態中最流行的HTTP客戶端,以其簡潔的API和強大的功能成為前后端交互的首選方案。本文將帶你深入掌握Axios在Vue項目中的核心用法和高級技巧。 一、基礎配置 1. 安裝與引入 npm install axios 2. 全局掛載(main.js) import …

Flink維表深度解析

一、維表的概念與作用 維表(Dimension Table) 是數據倉庫中的核心概念,通常用于存儲靜態或緩慢變化的業務實體信息(如用戶資料、商品信息、地理位置等)。在實時流處理場景中,維表的作用是為主數據流&#…

SKLearn - Biclustering

文章目錄 Biclustering (雙聚類)譜二分聚類算法演示生成樣本數據擬合 SpectralBiclustering繪制結果 Spectral Co-Clustering 算法演示使用光譜協同聚類算法進行文檔的二分聚類 Biclustering (雙聚類) 關于雙聚類技術的示例。 譜…

PostSwigger Web 安全學習:CSRF漏洞2

CSRF 漏洞學習網站:What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy CSRF 漏洞:SameSite相關繞過 當瀏覽器訪問服務器時,服務器會在 Cookie 中添加 SameSite 屬性來告訴瀏覽器是否在來自其他…

從基礎到實戰的量化交易全流程學習:1.3 數學與統計學基礎——概率與統計基礎 | 數字特征

從基礎到實戰的量化交易全流程學習:1.3 數學與統計學基礎——概率與統計基礎 | 數字特征 第一部分:概率與統計基礎 第2節:數字特征:期望值、方差、協方差與相關系數 一、期望值(Expected Value)&#xff1a…

MySQL(聚合函數)

單行函數 對每一條記錄輸入值進行計算,得到相應的計算結果,返回給用戶,也就是說,每條記錄作為一個輸入參數,經過函數計算得到每條記錄的計算結果。 每一個函數中都有一些常用的函數(方法) 在學…

babel核心知識點

Babel 是一個 JavaScript 編譯器,主要用于將 ECMAScript 2015 版本的代碼轉換為向后兼容的 JavaScript 代碼,以便在舊版本的瀏覽器或環境中運行。以下是 Babel 的核心知識點: 1. 基本概念 編譯器:Babel 本質上是一個編譯器&…

javaScript--數據結構和算法

在 JavaScript 里,數據結構和算法是十分關鍵的部分,下面介紹幾種常見的數據結構和對應的算法。 數組(Array) 數組是最基礎的數據結構,用于存儲一系列有序的數據。 // 創建數組 const arr [1, 2, 3, 4, 5];// 訪問元素…

π0.5:帶開放世界泛化的視覺-語言-動作模型

25年4月來自具身機器人創業公司 PI 公司的論文“π0.5: a Vision-Language-Action Model with Open-World Generalization”。 為了使機器人發揮作用,它們必須在實驗室之外的現實世界中執行實際相關的任務。雖然視覺-語言-動作 (VLA) 模型在端到端機器人控制方面已…

使用 OpenCV 和 dlib 進行人臉檢測

文章目錄 1. 什么是 dlib2. 前期準備介紹2.1 環境準備2.2 dlib 的人臉檢測器 3. 代碼實現3.1 導入庫3.2 加載檢測器3.3 讀取并調整圖像大小3.4 檢測人臉3.5 繪制檢測框3.6 顯示結果 4. 完整代碼5. 優化與改進5.1 提高檢測率5.2 處理 BGR 與 RGB 問題 6. 總結 人臉檢測是計算機視…

spring 的PropertySource 類與 @PropertySource 注解詳解與對比

PropertySource 類與 PropertySource 注解詳解與對比 在這里插入圖片描述 一、PropertySource 類詳解 1. 類型與作用 類型:接口(org.springframework.core.env.PropertySource)作用:抽象配置數據源,提供統一的鍵值…

Java后端開發day37--源碼解析:TreeMap可變參數--集合工具類:Collections

(以下內容全部來自上述課程) 1. TreeMap 1.1 須知 1.1.1 Entry 節點初始為黑色:提高代碼閱讀性 1.1.2 TreeMap中的成員變量 comparator:比較規則root:紅黑樹根節點的地址值size:集合的長度和紅黑樹…