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

相關文章
相關標籤/搜索