JavaScript鄙视题 - 重写forEach

简介

做为数组对象中最经常使用的方法之一, 咱们不只要会用, 也要知道它内部是如何实现的. 只有掌握了它的实现, 才能更好的理解. 我最近面试了很多候选人, 在js基础部分, 我通常也会问问这种题目. 可以完整的手写出来的候选人, 占比不大. 咱们在修炼“百家武学”的同时,更要注重“内功”的练习.javascript

重写数组的forEach方法.

这个方法的用法, 你们都应该很熟悉. 常见的用法以下:java

arr.forEach((item, index) => {
  // 第二个参数时能够省略的. 
  // to do something
})
复制代码

事实上forEach的cb里, 是能够接受3个参数的, 咱们测试一下:面试

const list = [
      {name: 'Jack'},
      {name: 'Joe'}
    ];

    list.forEach((...args) => {
      console.log(args);
    });
复制代码

运行后的截图以下: 数组

这3个参数分别是:测试

  • 元素的值
  • 元素的索引
  • 正在遍历的集合对象

了解它的完整用法以后, 再手写一个forEach就不会很难了.ui

Array.prototype.forEach = function(cb) {
  const len = this.length;
  for(let i=0; i<len; i++){
    cb(this[i], i, this);
  }
};
复制代码

在Array的prototype下添加一个forEach方法, 方法的实现是经过for来作遍历.this

相关文章
相关标签/搜索