前端手寫系列 手寫reduce函式

2021-10-23 20:44:21 字數 549 閱讀 7452

reduce函式常用於對陣列,reduce函式接受3個引數

被迭代的陣列

用於迭代計算的函式

迭代的初始值

注意點:如果沒有提供初始值時,會預設使用陣列的第乙個元素來作為初始值

function

reduce

(arr, callback, initialval)

// 如果沒有將initialval傳遞給該函式,預設使用陣列第一項作為initialval

const hasinitialval = initialval !== undefined;

let value = hasinitialval ? initialval : arr[0]

;// 如果有傳遞initialval,則索引從1開始,否則從0開始

for(

let i = hasinitialval ?0:

1; i < arr.length; i++

)return value;

}

前端手寫系列 手寫簡易版深拷貝

深拷貝方式1 json.parse json.stringify obj 這種方式有很多缺點,會忽略undefined,symbol,函式,不能解決迴圈引用的問題,不能處理正則,new date 以下深拷貝只考慮了物件和陣列的情況,其餘諸如date,function,regexp都沒有考慮 簡易版深...

手寫前端 serialize

在jquery中,寫下我們很方便序列化我們的表單,比如說 window.onload function 但是jquery庫是沉重的,那麼如何手寫乙個呢?思想 首先無論如何你都要去遍歷form裡面的,每乙個元素如input text radio select checkbox,獲取到name,然後va...

手寫系列 debounce

函式防抖 debounce 當持續觸發事件時,一定時間段內沒有再觸發事件,事件處理函式才會執行一次,如果設定的時間到來之前,又一次觸發了事件,就重新開始延時。如下圖,持續觸發scroll事件時,並不執行handle函式,當1000毫秒內沒有觸發scroll事件時,才會延時觸發scroll事件。fun...