国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS模擬實現ECMAScript5新增的數組方法

2024-05-06 15:19:39
字體:
來源:轉載
供稿:網友

ECMAScript5 新增了十個數組方法,這些方法只有在ie9及以上瀏覽器中可以被使用,下面是對于這些方法的模擬實現。

一、Array.isArray(element)

  該方法用于判斷傳入的對象是否為數組類型,返回true和false。

Array.newIsArray = function(element){  return Object.prototype.toString.call(element).slice(8,-1).toLocaleLowerCase() === 'array';}

二、.indexOf(element)

  該方法用于查找傳入對象在數組中的位置,并返回該位置,若沒有找到則返回-1,該方法不能用于尋找undefined。

  indexOf方法可以和~符配合使用。按位運算符~會將傳入數字取反并減一,所以-1就會變成0,這時候把它放在判斷條件中會被隱式轉換為false。

Array.prototype.newIndexOf = function(element){  var index = -1;  for(var i = 0; i < this.length; i++){    if(this[i] === element && this[i] !== undefined){      index = i;      break;    }  }  return index;};var a = [1,2,3,4,,,5];console.log(a.newIndexOf(undefined));

三、lastIndexOf(element)

  該方法與indexOf(element)作用和返回值相同,唯一不同的地方是它是從右向左尋找。

Array.prototype.newLastIndexOf = function(element){  var index = -1;  for(var i = this.length - 1; i >= 0; i--){    if(this[i] === element && this[i] !== undefined){      index = i;      break;    }  }  return index;};var a = [1,2,3,4,5,2,,,3];console.log(a.newLastIndexOf(undefined));

四、forEach(function(element, index, array){})

  遍歷數組,參數為一個回調函數,有三個傳參:當前元素、當前元素索引、整個數組,該方法會跳過保留缺失成員,不會破壞原數組。

Array.prototype.newForEach = function(fn){  for(var i = 0; i < this.length; i++){    if(i in this){      fn(this[i], i, this);    }  }};var a = [1,2,3,undefined,undefined,4,5,2,3];a.forEach(function(e, i, arr){  console.log(e, i, arr);})

五、every(function(element, index, array){})

  使用傳入的回調函數遍歷數組,當所有回調都返回true時,every方法返回true,否則返回false。該方法會跳過保留缺失成員,不會破壞原數組。

Array.prototype.newEvery = function(fn){  var status = true;  for(var i = 0; i < this.length; i++){    if(i in this){      if(!(status = !!fn(this[i], i, this))){        break;      }    }  }  return status;};var a = [1,2,3,4,5,2,undefined,,3];console.log(a.newEvery(function(){  console.log(arguments);  return 1;}));

 六、some(function(element, index, array){})

  使用傳入的回調函數遍歷數組,當有回調返回true時,some方法返回true,否則返回false。該方法會跳過保留缺失成員,不會破壞原數組。

Array.prototype.newSome = function(fn){  var status = false;  for(var i = 0; i < this.length; i++){    if(i in this){      if(status = !!fn(this[i], i, this)){        break;      }    }  }  return status;};var a = [1,2,3,4,5,2,undefined,,3];console.log(a.newSome(function(){  console.log(arguments);  return 0;}));            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 平南县| 江油市| 名山县| 梧州市| 北流市| 海盐县| 营口市| 南陵县| 扶绥县| 北票市| 宣恩县| 定襄县| 华容县| 东乡族自治县| 泽普县| 新昌县| 顺昌县| 南昌市| 衡山县| 宜兰市| 监利县| 神农架林区| 台南县| 华安县| 乌什县| 皮山县| 高陵县| 新安县| 库伦旗| 盐山县| 尼玛县| 永宁县| 定安县| 许昌市| 保德县| 会宁县| 临安市| 册亨县| 介休市| 宜阳县| 抚顺市|