es5实现map/filter

匿名 (未验证) 提交于 2019-12-02 23:48:02

// ES5循环循环实现filter

const selfFilter = function (fn, context) {      let arr = Array.prototype.slice.call(this)      let filteredArr = []      for (let i = 0; i < arr.length; i++) {          if(!arr.hasOwnProperty(i)) continue;           fn.call(context, arr[i], i, this) && filteredArr.push(arr[i])      }      return filteredArr  }

// ES5循环实现map

const selfMap = function (fn, context) {      let arr = Array.prototype.slice.call(this)      let mappedArr = []      for (let i = 0; i < arr.length; i++) {          // 判断稀疏数组的情况          if (!arr.hasOwnProperty(i)) continue;          mappedArr.push(fn.call(context, arr[i], i, this))      }      return mappedArr  }

// reduce实现map

const selfMap2 = function (fn, context) {      let arr = Array.prototype.slice.call(this)      return arr.reduce((pre, cur, index) => {          return [...pre, fn.call(context, cur, index, this)]      }, [])  }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!