-
仿寫Array.prototype.forEach
// [].forEach((elem, index, array) => {}) Array.prototype.forEach = function (func) { for (var i = 0, len = this.length; i < len; i ++) { func(this[i], i, this) } } // 所以forEach的回調函數中不支持break
-
仿寫Array.prototype.filter
// [].filter((elem, index, array) => {}) Array.prototype.filter = function (func) { var res = [] for (var i = 0, len = this.length; i < len; i ++) { if (func(this[i], i, this)) { res.push(this[i]) } } return res }
-
仿寫Array.prototype.map
// [].map((item, index, array) => {}) Array.prototype.simpleMap = function (func) { var res = [] for (var i = 0, len = this.length; i < len; i ++) { // 【注意】: 這是淺拷貝 res.push(func(this[i], i, this)) } return res } Array.prototype.deepMap = function (func) { var res = [] for (var i = 0, len = this.length; i < len; i ++) { // 【注意】: 這是深拷貝 let newItem = func(deepClone(this[i]), i, this) res.push( newItem ) } return res } function _deepClone(origin) { // 原始值直接返回 if (typrof(origin) !== 'object' || origin == null) { return origin } // 初始化克隆結果 let cloneObj if (origin instanceof Array) { cloneObj = [] } if (origin instanceof Object) { cloneObj = {} } // 對於引用值遍歷克隆 for (let key in origin) { if (Object.hasOwnProperty(key)) { cloneObj[key] = deepClone(origin[key]) } } // 返回克隆結果 return clone }
深入探究數組常用API學習筆記(一)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.