JS中some(),every(),forEach(),map(),filter()區別

來源:互聯網
上載者:User

標籤:fine   name   dev   元素   ase   rom   com   als   isp   

map():返回一個新的Array,每個元素為調用func的結果

filter():返回一個符合func條件的元素數組

some():返回一個boolean,判斷是否有元素是否符合func條件

every():返回一個boolean,判斷每個元素是否符合func條件

forEach():沒有傳回值,只是針對每個元素調用func

API的區別

function my_func(item) {  if (item == 1) {    console.log(‘t‘);    return true;  }  console.log(‘f‘);  return false;}// init an arrayl = [0,1,2,3,4]// print: f,t,f,f,f// return:[false, true, false, false, false]l.map(my_func)// print: f,t,f,f,f// return: 1l.filter(my_func)// print: f,t// return: truel.some(my_func)// print: f// return: falsel.every(my_func)// print: f,t,f,f,f//return: undefinedl.forEach(my_func)內部實現// From:http://developer.mozilla.orgArray.prototype.map = function(fun /*, thisp*/){  var len = this.length;  if (typeof fun != "function")    throw new TypeError();  var res = new Array(len);  var thisp = arguments[1];  for (var i = 0; i < len; i++)  {    if (i in this)      res[i] = fun.call(thisp, this[i], i, this);  }  return res;};Array.prototype.filter = function(fun /*, thisp*/){  var len = this.length;  if (typeof fun != "function")    throw new TypeError();  var res = new Array();  var thisp = arguments[1];  for (var i = 0; i < len; i++)  {    if (i in this)    {      var val = this[i]; // in case fun mutates this      if (fun.call(thisp, val, i, this))        res.push(val);    }  }  return res;};Array.prototype.some = function(fun /*, thisp*/){  var len = this.length;  if (typeof fun != "function")    throw new TypeError();  var thisp = arguments[1];  for (var i = 0; i < len; i++)  {    if (i in this && fun.call(thisp, this[i], i, this))      return true;  }  return false;};Array.prototype.every = function(fun /*, thisp*/){  var len = this.length;  if (typeof fun != "function")    throw new TypeError();  var thisp = arguments[1];  for (var i = 0; i < len; i++)  {    if (i in this && !fun.call(thisp, this[i], i, this))    return false;  }  return true;};Array.prototype.forEach = function(fun /*, thisp*/){  var len = this.length;  if (typeof fun != "function")    throw new TypeError();  var thisp = arguments[1];  for (var i = 0; i < len; i++)  {    if (i in this)      fun.call(thisp, this[i], i, this);  }};

JS中some(),every(),forEach(),map(),filter()區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.