重溫reduce方法,並深入探究API實現方式

  • 回顧基本使用方式

    	// arr.reduce(() => {})
    	let arr = [1, 2, 3, 4, 5]
    	let res = arr.reduce((prevVal, item, index, arr) => {
    		console.log(prevVal, item, index, arr)
    		return prevVal + item
    	}, 0)
    	let res2 = arr.reduce((prevVal, item, index, arr) => {
    		console.log(prevVal, item, index, arr)
    		return prevVal + item
    	})
    	console.log(res, res2)
    
  • 模擬實現reduce方法

    	Array.prototype.myReduce = function (func, prevVal) {
    		// 根據是否傳遞了第二個參數來初始化遍歷數組的起始位置
    		let startIdx = 0	// 傳了
    		if (!prevVal) {		// 沒傳
    			startIdx = 1
    			prevVal = this[0]
    		}
    
    		for (let i = startIdx, len = this.length; i < len; i ++) {
    			// 回調的每一次執行結果都賦給prevVal
    			prevVal = func(prevVal, this[i], i, this)
    		}
    		
    		return prevVal
    	}
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章